176
cenidet Centro Nacional de Investigación y Desarrollo Tecnológico Departamento de Ciencias Computacionales TESIS DE MAESTRÍA EN CIENCIAS API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas presentada por Lirio Ruiz Guerra Ing. en Sistemas Computacionales por el I. T. del Istmo como requisito para la obtención del grado de: Maestría en Ciencias en Ciencias de la Computación Director de tesis: Dr. Juan Gabriel González Serna Co-Director de tesis: Dr. Víctor Jesús Sosa Sosa Jurado: Dr. René Santaolaya Salgado– Presidente Dr. Juan Gabriel González Serna – Secretario MC. José Antonio Zárate Marceleño – Vocal MC. Humberto Hernández García – Vocal Suplente Cuernavaca, Morelos, México. 14 de Diciembre 2007

API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Embed Size (px)

DESCRIPTION

Los servicios basados en localización (LBS por sus siglas en inglés), son un conjunto de tecnologías que tienen como objetivo obtener la ubicación de un dispositivo móvil y a partir de esta, ofrecer servicios. Los elementos que lo hacen posible son el uso de tecnologías de posicionamiento, un sistema de información geográfica, un medio de comunicación, un centro de control y una forma de representar los datos. Entre las aplicaciones basadas en localización que existen en la actualidad están las aplicaciones para búsqueda de servicio, búsqueda de personas, publicidad móvil, información turística, seguimiento de vehículos, información de tráfico, y servicios de emergencia. La mayoría de estas utilizan Internet como medio de transporte. Aún cuando los sistemas de localización de dispositivos móviles han existido desde hace tiempo, éstos no habían sido muy utilizados debido a los altos costos de su implementación, así como lo limitado de explotar la información obtenida de ellos. El uso de tecnologías de localización satelital como es el Sistema de Posicionamiento Global (GPS por sus siglas en inglés), facilita la obtención de la ubicación del dispositivo móvil, por otro lado el avance en los sistemas de información geográfica permite ofrecer información ilimitada a partir de la ubicación del dispositivo móvil. El presente trabajo tiene como objetivo proporcionar una herramienta que permita el desarrollo de aplicaciones LBS para dispositivos móviles utilizando GPS como técnica de posicionamiento y el Servicio Mensajería Corta (SMS por sus siglas en inglés) como medio de transporte.

Citation preview

Page 1: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

cenidet

Centro Nacional de Investigación y Desarrollo Tecnológico

Departamento de Ciencias Computacionales

TESIS DE MAESTRÍA EN CIENCIAS

API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

presentada por

Lirio Ruiz Guerra Ing. en Sistemas Computacionales por el I. T. del Istmo

como requisito para la obtención del grado de:

Maestría en Ciencias en Ciencias de la Computación

Director de tesis: Dr. Juan Gabriel González Serna

Co-Director de tesis:

Dr. Víctor Jesús Sosa Sosa

Jurado: Dr. René Santaolaya Salgado– Presidente

Dr. Juan Gabriel González Serna – Secretario MC. José Antonio Zárate Marceleño – Vocal

MC. Humberto Hernández García – Vocal Suplente

Cuernavaca, Morelos, México. 14 de Diciembre 2007

Page 2: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

DEDICATORIA

A Dios, para Él todo honor y toda Gloria.

A mis padres: Profesor Vicente Ruiz Martínez y Sra. Ana María Asunción

Guerra Jiménez, como mínima retribución de todo lo que me han dado.

A mis hermanos: Vicente, Mario, Dionisio e Isaac, este triunfo también es

de ustedes.

Page 3: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

AGRADECIMIENTOS A Dios fuente y fin de la vida. A mis padres y hermanos por apoyarme siempre, por preocuparse por mí, por sus oraciones, por toda la energía invertida en mi persona. Sin ustedes no lo hubiera logrado. Al Centro Nacional de Investigación y Desarrollo Tecnológico por haberme permitido pertenecer a su comunidad estudiantil y realizar así mis estudios de maestría. Al Consejo Nacional de Ciencia y Tecnología por la beca para manutención otorgada. A mi director de tesis Dr. Juan Gabriel González Serna, por haberme elegido como su tesista, por la asesoría brindada, por la paciencia que me tuvo, por el buen trato, por gestionar el equipamiento del laboratorio, y sobre todo por brindarme su amistad. A mis revisores de tesis: Dr. René Santaolaya Salgado, MC. Humberto Hernández García, MC. José Antonio Zárate Marceleño, por el tiempo que dedicaron a este proyecto, por sus recomendaciones y aportaciones. A Gero, Isakcin, Kenya, Magdy, Edgar, Toño y a el Vencedor por las llamadas telefónicas por las porras a distancia, por el amor que me tienen. A mi gran familia juchiteca, abuelos, tíos, primos, amigos, a todas esas personas que me dejaron partir, sabiendo que nunca olvidaría mis orígenes. Gracias por los ánimos, por sus oraciones y por la confianza depositada en mí. A mis compañeros de generación: Ricardo, Edna, Erick, Arturo, Erwin, Elvia, Cindy, Lalo, Perla, Zuci, Héctor, Chan, Rubén, Gerardo, Luz, Jaz, Silvana y a los de las otras generaciones: Janet, Katy, Lalo, Mati, Omar, Claudia por la grata convivencia. A mis hermanitos SDs: a mi más que amigo Pedro, al herrrmano Daniel, a mi Chuy, a la Adrisix, por los ratos agradables, por los sabores y sinsabores que compartimos, por brindarme su amistad, siempre tendrán un lugar especial en mi corazón. A los SDs mayores Juan Carlos y Rafa por su apoyo y recomendaciones. No podría mencionar en este pequeño espacio a todas las personas que hicieron posible este proyecto, así que no me queda más que decir:

¡¡ Xquixe’pe latu !!

¡¡ Gracias a todos !!

Page 4: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

RESUMEN Los servicios basados en localización (LBS por sus siglas en inglés), son un

conjunto de tecnologías que tienen como objetivo obtener la ubicación de un

dispositivo móvil y a partir de esta, ofrecer servicios. Los elementos que lo hacen

posible son el uso de tecnologías de posicionamiento, un sistema de información

geográfica, un medio de comunicación, un centro de control y una forma de

representar los datos.

Entre las aplicaciones basadas en localización que existen en la actualidad están

las aplicaciones para búsqueda de servicio, búsqueda de personas, publicidad

móvil, información turística, seguimiento de vehículos, información de tráfico, y

servicios de emergencia. La mayoría de estas utilizan Internet como medio de

transporte.

Aún cuando los sistemas de localización de dispositivos móviles han existido

desde hace tiempo, éstos no habían sido muy utilizados debido a los altos costos

de su implementación, así como lo limitado de explotar la información obtenida de

ellos. El uso de tecnologías de localización satelital como es el Sistema de

Posicionamiento Global (GPS por sus siglas en inglés), facilita la obtención de la

ubicación del dispositivo móvil, por otro lado el avance en los sistemas de

información geográfica permite ofrecer información ilimitada a partir de la

ubicación del dispositivo móvil.

El presente trabajo tiene como objetivo proporcionar una herramienta que permita

el desarrollo de aplicaciones LBS para dispositivos móviles utilizando GPS como

técnica de posicionamiento y el Servicio Mensajería Corta (SMS por sus siglas en

inglés) como medio de transporte.

Page 5: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

ABSTRACT

Page 6: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

i

TABLA DE CONTENIDO LISTA DE FIGURAS ............................................................................................................................ii LISTA DE TABLAS.............................................................................................................................. v GLOSARIO..........................................................................................................................................vi CAPÍTULO 1 INTRODUCCION .......................................................................................................... 1

1.1 Introducción............................................................................................................................... 3 1.2 Descripción del Problema ......................................................................................................... 3 1.3 Objetivos ................................................................................................................................... 4 1.4 Justificación............................................................................................................................... 4 1.5 Beneficios.................................................................................................................................. 6 1.6 Antecedentes ............................................................................................................................ 6 1.7 Trabajos relacionados............................................................................................................... 7

1.7.1 Unefon .............................................................................................................................. 7 1.7.2 Iusacell .............................................................................................................................. 7 1.7.3 Movistar ............................................................................................................................ 8 1.7.4 Sección amarilla ............................................................................................................... 8 1.7.5 Nextel ................................................................................................................................ 8 1.7.6 Location Adquisition API ................................................................................................... 9 1.7.7 JSR 179 Location API ....................................................................................................... 9

1.8 Alcance del proyecto de tesis ................................................................................................. 10 1.9 Organización del documento .................................................................................................. 11

CAPÍTULO 2 MARCO TEÓRICO...................................................................................................... 12

2.1 Elementos de Programación................................................................................................... 15 2.1.1 API ................................................................................................................................... 15 2.1.2 J2ME................................................................................................................................ 15

2.2 Comunicaciones móviles ........................................................................................................ 17 2.2.1 Tecnología GSM.............................................................................................................. 17 2.2.2 SMS ................................................................................................................................. 19

2.3. LBS. Servicios basados en localización ................................................................................ 23 2.3.1 Definición ......................................................................................................................... 23 2.3.2 Componentes .................................................................................................................. 24 2.3.3 Funcionamiento ............................................................................................................... 25 2.3.4 Clasificación..................................................................................................................... 26

2.4. Técnicas de posicionamiento................................................................................................. 27 2.4.1 Técnicas basadas en red ................................................................................................ 28 2.4.2 Técnicas basadas en la modificación del dispositivo móvil ............................................ 30 2.4.3 Comparativa de tecnologías............................................................................................ 32

2.5 Protocolo NMEA...................................................................................................................... 32 2.5.1 Sentencias NMEA............................................................................................................ 33

CAPÍTULO 3 ANÁLISIS Y DISEÑO.................................................................................................. 35

3.1 Análisis.................................................................................................................................... 37 3.2 Diseño ..................................................................................................................................... 54 3.3 Diseño de tramas.................................................................................................................... 66

CAPÍTULO 4 IMPLEMENTACIÓN.................................................................................................... 72

4.1 Conexión con el GPS.............................................................................................................. 75 4.2 Envío de consulta georeferenciada. ....................................................................................... 78 4.3 Recepción de respuesta no georeferenciada. ........................................................................ 80 4.4 Recepción de solicitud de ubicación....................................................................................... 81

Page 7: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

ii

CAPÍTULO 5 PRUEBAS ................................................................................................................... 84 CAPÍTULO 6 CONCLUSIONES...................................................................................................... 105

6.1 Conclusiones......................................................................................................................... 107 6.2 Aportaciones ......................................................................................................................... 108 6.3 Trabajos futuros .................................................................................................................... 108 6.4 Publicaciones........................................................................................................................ 109

ANEXOS.......................................................................................................................................... 110

ANEXO A DOCUMENTACION DE LA API ................................................................................ 113 ANEXO B CODIGO DE APLICACIONES DE PRUEBA............................................................. 136 ANEXO C DISPOSITIVOS MOVILES CON MIDP 2.0 ............................................................... 149 ANEXO D PLAN DE PRUEBAS APISMSLBS............................................................................ 151

REFERENCIAS............................................................................................................................... 160

LISTA DE FIGURAS Figura 1.1 Usuarios de telefonía móvil en México ............................................................................. 4 Figura 1.2 Usuarios de telefonía celular de prepago y pospago en México....................................... 5 Figura 1.3 Ubicación de la tesis respecto a sus antecedentes........................................................... 6 Figura 1.4 Arquitectura LBS.............................................................................................................. 10 Figura 2.1 Plataforma Java 2 ............................................................................................................ 16 Figura 2.2 Arquitectura GSM ............................................................................................................ 17 Figura 2.3 Estructura básica de la red para la transferencia de SMS .............................................. 20 Figura 2.4 Niveles y servicios para el envío de mensajes cortos. .................................................... 20 Figura 2.5 PDUs utilizados en la capa SM-TL .................................................................................. 21 Figura 2.6 Trama SMS-SUBMIT ....................................................................................................... 21 Figura 2.7 Detalle del campo SCA.................................................................................................... 21 Figura 2.8 Trama SMS-DELIVER .................................................................................................... 23 Figura 2.9 LBS como intersección de tecnologías............................................................................ 23 Figura 2.10 Componentes básicos LBS............................................................................................ 24 Figura 2.11 Funcionamiento LBS...................................................................................................... 25 Figura 2.12 Clasificación de los LBS ................................................................................................ 26 Figura 2.13 Clasificación de las técnicas globales de posicionamiento ........................................... 27 Figura 2.14 Técnica de localización Cell of Origin - Cell ID.............................................................. 28 Figura 2.15 Técnica de localización Angle of Arrival ........................................................................ 28 Figura 2.16 Técnica de Localización Time of Arrival ........................................................................ 29 Figura 2.17 Técnica de localización Time Difference Of Arrival ....................................................... 29 Figura 2.18 Técnica de localización Multipath Fingerprint................................................................ 30 Figura 2.19 Cálculo de la ubicación a partir de tres satélites GPS................................................... 31 Figura 2.20 Técnica de localización A-GPS...................................................................................... 32 Figura 2.21 Sentencia GGA .............................................................................................................. 34 Figura 3.1 Diagrama de bloques del proceso de envío / recepción de consultas georeferenciadas / no georeferenciadas.......................................................................................................................... 37 Figura 3.2 Diagrama general de casos de uso. ................................................................................ 38 Figura 3.3 Diagrama del caso de uso Obtener información del GPS............................................... 39 Figura 3.4 Diagrama de actividad del caso de uso CU-1 Obtener información del GPS ................. 40 Figura 3.5 Diagrama de actividad del caso de uso CU-1.1 Obtener dispositivos cercanos............ 41 Figura 3.6 Diagrama de actividad del caso de uso CU-1.2 Obtener URL del dispositivo seleccionado...................................................................................................................................... 43

Page 8: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

iii

Figura 3.7 Diagrama de actividad del caso de uso CU-1.3 Conectar GPS ...................................... 45 Figura 3.8 Diagrama del caso de uso Elaborar trama ...................................................................... 45 Figura 3.9 Diagrama de actividad del caso de uso C-2 Elaborar trama ........................................... 47 Figura 3.10 Diagrama del caso de uso Enviar trama........................................................................ 48 Figura 3.11 Diagrama de actividad del caso de uso CU-3 Enviar trama.......................................... 49 Figura 3.12 Diagrama del caso de uso Recibir respuesta ................................................................ 49 Figura 3.13 Diagrama de actividad del caso de uso CU-4 Recibir respuesta .................................. 51 Figura 3.14 Diagrama de actividad del caso de uso CU-4.1.1 Registrar aplicación......................... 52 Figura 3.15 Diagrama de caso de uso Interpretar trama .................................................................. 52 Figura 3.16 Diagrama de actividad del caso de uso CU-5 Interpretar trama ................................... 53 Figura 3.17 Diagrama general de clases de la API........................................................................... 55 Figura 3.18 Diagrama de clases del paquete mx.cenidet.apisms.conexiongps ............................... 56 Figura 3.19 Diagrama general de clases de la aplicación Consulta Geo Ubicacion ........................ 57 Figura 3.20 Diagrama de secuencias para detectar dispositivos Bluetooth cercanos ..................... 58 Figura 3.21 Diagrama de secuencias para conectar y obtener datos de un dispositivo GPS.......... 59 Figura 3.22 Diagrama de clases del paquete mx.edu.cenidet.apisms.conexionsms ....................... 60 Figura 3.23 Diagrama de secuencia para enviar un mensaje .......................................................... 61 Figura 3.24 Diagrama de secuencia para recibir un mensaje .......................................................... 62 Figura 3.25 Diagrama de clases del paquete mx.cenidet.edu.apisms.dato ..................................... 63 Figura 3.26 Diagrama de clases del paquete mx.cenidet.edu.apisms.trama ................................... 64 Figura 3.27 Diagrama de secuencia para la elaboración de un mensaje de tipo Evento................. 65 Figura 3.28 Trama Mensaje .............................................................................................................. 66 Figura 3.29 Detalle de cabecera ....................................................................................................... 66 Figura 3.30 Dato extras..................................................................................................................... 66 Figura 3.31 Detalle de dato ............................................................................................................... 68 Figura 3.32 Trama PoiGeo................................................................................................................ 68 Figura 3.33 Campo dato de trama Q_GEO_UBICACION ................................................................ 68 Figura 3.34 Campo dato de trama Q_CAMINO_GEO_GEO............................................................ 69 Figura 3.35 PoiNoGeo....................................................................................................................... 69 Figura 3.36 Campo dato de trama Q_CAMINO_GEO_NOGEO ...................................................... 69 Figura 3.37 Campo dato de trama Q_GEO_EVENTO ..................................................................... 69 Figura 3.38 Campo dato de trama Q_GEO_CLIMA ......................................................................... 70 Figura 3.39 Campo dato de trama Q_NOGEO_UBIACION ............................................................. 70 Figura 3.40 Campo dato de trama Q_CAMINO_NOGEO_GEO ...................................................... 70 Figura 3.41 Campo dato de trama Q_CAMINO_NOGEO_NOGEO................................................. 70 Figura 3.42 Campo dato de trama Q_NOGEO_CLIMA.................................................................... 70 Figura 3.43 Campo dato de trama R_GEO_UBICACION ................................................................ 71 Figura 3.44 Campo dato de trama R_GEO_CAMINO ...................................................................... 71 Figura 3.45 Campo dato de trama R_GEO_EVENTO...................................................................... 71 Figura 3.46 Campo dato de trama R_CLIMA.................................................................................... 71 Figura 3.47 Campo dato de trama R_NOGEO_UBICACION ........................................................... 71 Figura 3.48 Campo dato de trama R_NOGEO_EVENTO ................................................................ 71 Figura 4.1 Búsqueda de Dispositivos Bluetooth ............................................................................... 76 Figura 4.2 Conexión con GPS........................................................................................................... 77 Figura 4.3 Impresión de datos........................................................................................................... 78 Figura 4.4 Creación del objeto PoiGeoreferenciado......................................................................... 78 Figura 4.5 Envío de consulta de ubicación georeferenciada ............................................................ 80 Figura 4.6 Recepción de respuesta no georeferenciada .................................................................. 81 Figura 4.7 Recepción de petición de ubicación ................................................................................ 83 Figura 4.8 Obtención de ubicación y envío de respuesta................................................................. 83 Figura 5.1 Lista de Dispositivos encontrados ................................................................................... 88 Figura 5.2 Datos de ubicación obtenidos.......................................................................................... 89 Figura 5.3 Verificación de las coordenadas en google Earth ........................................................... 89 Figura 5.4 Solicitud de las escuelas cercanas. ................................................................................. 90 Figura 5.5 Ventana de información con la trama de consulta.......................................................... 90 Figura 5.6 Ventana de Información con la primera trama de respuesta........................................... 90

Page 9: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

iv

Figura 5.7 Datos del primer mensaje de respuesta. ......................................................................... 90 Figura 5.8 Ventana de Información con la segunda trama de respuesta ......................................... 90 Figura 5.9 Datos del segundo mensaje de respuesta ...................................................................... 90 Figura 5.10 Solicitud de las farmacias cercanas indicando dirección............................................... 91 Figura 5.11 Trama enviada ............................................................................................................... 91 Figura 5.12 Trama Recibida.............................................................................................................. 91 Figura 5.13 Interpretación de trama.................................................................................................. 91 Figura 5.14 Consulta georeferenciada de evento cultural ................................................................ 92 Figura 5.15 Trama enviada ............................................................................................................... 92 Figura 5.16 Trama recibida ............................................................................................................... 92 Figura 5.17 Interpretación de la trama .............................................................................................. 92 Figura 5.18 Consulta no georeferenciada de evento cultural. .......................................................... 93 Figura 5.19 Trama enviada ............................................................................................................... 93 Figura 5.20 Trama Recibida.............................................................................................................. 93 Figura 5.21 Interpretación de la trama .............................................................................................. 93 Figura 5.22 Consulta de un camino con inicio y fin georeferenciados.............................................. 94 Figura 5.23 Trama enviada ............................................................................................................... 94 Figura 5.24 Trama recibida .............................................................................................................. 94 Figura 5.25 Interpretación de la trama .............................................................................................. 94 Figura 5.26 Solicitud de camino con punto inicial georeferenciado y final no georeferenciado. ...... 95 Figura 5.27 Trama Enviada............................................................................................................... 95 Figura 5.28 Trama recibida ............................................................................................................... 95 Figura 5.29 Interpretación de la trama .............................................................................................. 95 Figura 5.30 Consulta de un camino con inicio no georeferenciado y fin georeferenciado ............... 96 Figura 5.31 Trama Enviada............................................................................................................... 96 Figura 5.32 Trama Recibida.............................................................................................................. 96 Figura 5.33 Interpretación de la trama. ............................................................................................. 96 Figura 5.34 Solicitud de camino con inicio y fin no georeferenciados .............................................. 97 Figura 5.35 Trama enviada ............................................................................................................... 97 Figura 5.36 Trama Recibida.............................................................................................................. 97 Figura 5.37Interpretación de trama................................................................................................... 97 Figura 5.38 Solicitud georeferenciada de Clima ............................................................................... 98 Figura 5.39 Trama enviada ............................................................................................................... 98 Figura 5.40 Trama recibida ............................................................................................................... 98 Figura 5.41 Trama Interpretada ........................................................................................................ 98 Figura 5.42 Solicitud de clima de Cuernavaca.................................................................................. 99 Figura 5.43 Trama Enviada............................................................................................................... 99 Figura 5.44 Trama Recibida.............................................................................................................. 99 Figura 5.45 Interpretación de la trama .............................................................................................. 99 Figura 5.46 Respuesta Georeferenciada de ubicación................................................................... 100 Figura 5.47 Trama Enviada............................................................................................................. 100 Figura 5.48 Trama Recibida............................................................................................................ 100 Figura 5.49 Interpretación de la trama ............................................................................................ 100 Figura 5.50 respuesta de camino.................................................................................................... 101 Figura 5.51 Trama Enviada............................................................................................................. 101 Figura 5.52 Trama Recibida............................................................................................................ 101 Figura 5.53 Trama Interpretada ...................................................................................................... 101 Figura 5.54 Respuesta Georeferenciada de Evento....................................................................... 102 Figura 5.55 Trama Recibida............................................................................................................ 102 Figura 5.56 Trama Enviada............................................................................................................. 102 Figura 5.57 Interpretación de la trama ............................................................................................ 102 Figura 5.58 Respuesta de Clima..................................................................................................... 103 Figura 5.59 Trama Enviada............................................................................................................. 103 Figura 5.60 Trama Recibida............................................................................................................ 103 Figura 5.61 Trama Interpretada ...................................................................................................... 103 Figura 5.62 Respuesta no georeferenciada de evento................................................................... 104

Page 10: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

v

Figura 5.63 Trama Enviada............................................................................................................. 104 Figura 5.64 Trama Recibida............................................................................................................ 104 Figura 5.65 Trama Interpretada ...................................................................................................... 104

LISTA DE TABLAS Tabla 1.1 Comparativa de los servicios de localización con la tesis. ................................................. 9 Tabla 1.2 Comparativa de APIs de localización con la tesis .............................................................. 9 Tabla 2.1 Descripción de valores de MTI.......................................................................................... 22 Tabla 2.2 Necesidades de los usuarios móviles. .............................................................................. 26 Tabla 2.3 Resumen comparativo de las tecnologías de localización ............................................... 32 Tabla 2.4 Sentencias NMEA ............................................................................................................. 33 Tabla 3.1 Descripción del caso de uso Obtener información del GPS............................................. 39 Tabla 3.2 Descripción del caso de uso CU-1.1 Obtener dispositivos cercanos ............................... 40 Tabla 3.3 Descripción del caso de uso CU-1.2 Obtener URL del dispositivo seleccionado ............ 42 Tabla 3.4 Descripción del caso de uso CU-1.3 Conectar GPS ........................................................ 44 Tabla 3.5 Descripción del caso de uso C-2 Elaborar trama ............................................................. 46 Tabla 3.6 Descripción del caso de uso CU-3 Enviar trama .............................................................. 48 Tabla 3.7 Descripción del caso de CU-4 Recibir respuesta ............................................................. 50 Tabla 3.8 Descripción del caso de uso CU-4.1.1 Registrar aplicación............................................. 51 Tabla 3.9 Descripción del caso de uso CU-5 Interpretar trama........................................................ 52 Tabla 3.10 Valores del campo Tipo de la cabecera de la trama....................................................... 67 Tabla 3.11 Valores del Campo Palabra ............................................................................................ 68 Tabla 3.12 Valores del campo Distancia........................................................................................... 68 Tabla 3.13 Valores del campo Tipo de Evento ................................................................................. 69

Page 11: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

vi

GLOSARIO DE TÉRMINOS YSIGLAS CDMA Code Division Multiple Access. La multiplexación por división

de código es un término genérico que define una interfaz de aire inalámbrica basada en la tecnología de espectro extendido.

CLDC Connected Limited Device Configuration. Configuración para dispositivos de conexión limitada.

Geocodificación Es el proceso de asignar coordenadas geográficas (latitud-longitud) a puntos del mapa (direcciones, puntos de interés, etc.).

GIS Geographic Information System. Los sistemas de información geográfica son una integración organizada de hardware, software, datos geográficos y personal, diseñado para capturar, almacenar, manipular, analizar y desplegar en todas sus formas la información geográficamente referenciada con el fin de resolver problemas complejos de planificación y gestión.

GPRS General Packet Radio Service. Servicio General de Paquetes por Radio. Es una tecnología digital de telefonía móvil. Es considerada la generación 2.5, entre la segunda generación (GSM) y la tercera (UMTS). Proporciona altas velocidades de transferencia de datos (especialmente útil para conectar a Internet) y se utiliza en las redes GSM.

GPS Global Positioning System. Sistema de Posicionamiento Global. Sistema Global de Navegación por Satélite que permite determinar en todo el mundo la posición de un objeto.

GSM Global System for Mobile communications. Sistema Global para las Comunicaciones Móviles. Formalmente conocida como “Group Special Mobile” (GSM, Grupo Especial Móvil) es un estándar mundial para teléfonos móviles digitales.

IEEE Institute of Electrical and Electronics Engineers. Instituto de Ingenieros Eléctricos y Electrónicos, una asociación técnico-profesional mundial dedicada a la estandarización, entre otras cosas. Es la mayor asociación internacional sin fines de lucro formada por profesionales de las nuevas tecnologías, como ingenieros de telecomunicaciones, ingenieros electrónicos, Ingenieros en informática e Ingenieros en computación.

Page 12: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

vii

LBS Location Based Services. Los Servicios Basados en Localización buscan ofrecer un servicio personalizado a los usuarios basado en información de ubicación geográfica de estos.

MIDP Mobile Information Device Profiles. Perfil para dispositivos móviles de información.

POI Point Of Interest. Es la ubicación de un lugar que puede ser considerado de interés. Puede representarse en términos de latitud, longitud (POI georeferenciado) o en términos de calle, colonia, código postal (POI no georeferenciado).

SMS Short Message Service. Servicio de mensajería corto. Es un servicio disponible en los teléfonos móviles que permite el envío de mensajes cortos entre teléfonos móviles, teléfonos fijos y otros dispositivos de mano.

TDMA Time Division Multiple Access. Tecnología que distribuye las unidades de información en alternantes slots de tiempo proveyendo acceso múltiple a un reducido número de frecuencias. TDMA es una tecnología inalámbrica de segunda generación que brinda servicios de alta calidad de voz y datos. Divide un único canal de frecuencia de radio en seis ranuras de tiempo. A cada persona que hace una llamada se le asigna una ranura de tiempo específica para la transmisión, lo que hace posible que varios usuarios utilicen un mismo canal simultáneamente sin interferir entre sí.

UMTS Universal Mobile Telecommunications System. Sistema de telecomunicaciones móviles de tercera generación, que reúne todos los servicios mediante las funciones de la red inteligente.

WAP Wireless Application Protocol. Protocolo de aplicaciones inalámbricas. Es un estándar abierto internacional para aplicaciones que utilizan las comunicaciones inalámbricas. Se trata de la especificación de un entorno de aplicación y de conjunto de protocolos de comunicaciones para normalizar el modo en que los dispositivos inalámbricos, se pueden utilizar para acceder a correo electrónico, grupo de noticias y otros.

Todas las definiciones excepto la de POI se tomaron de [wiki07].

Page 13: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

CAPÍTULO 1 INTRODUCCION

En este capítulo se presenta la descripción del problema que dio origen al presente trabajo de tesis, su objetivo, justificación y beneficios. También la ubicación que tiene con respecto a sus antecedentes en cenidet. Así mismo los trabajos relacionados. Y por último la organización del documento.

Page 14: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 15: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

3

1.1 Introducción

La comunicación sin cables brinda la oportunidad de estar comunicados en cualquier lugar, en cualquier momento y de una forma totalmente personal. Existen distintos tipos de comunicación móvil entre las que sin duda destaca la telefonía móvil. El servicio de mensajería ofrecido en la telefonía móvil ha obtenido mucha popularidad entre los usuarios, además es un servicio no orientado a conexión, es decir, no requiere de una conexión persistente, lo que facilita la comunicación. Con la evolución de la telefonía móvil, surge también la necesidad de nuevos dispositivos móviles que soporten la tecnología, de la misma forma surge también la necesidad de desarrollo de aplicaciones que puedan aprovechar al máximo dicha tecnología. Es entonces, que aparece el interés en la programación enfocada a dispositivos móviles. Esta programación permite crear aplicaciones que ofrecen servicios de mensajería, procesamiento de imágenes, videos y más recientemente servicios basados en localización. Los LBS por sus siglas en inglés responden a preguntas como: ¿Qué hay cerca de…? ¿Cómo llego a…? ¿Qué eventos hay cerca de…?. La ubicación del dispositivo móvil o de los puntos de interés (POI por sus siglas en inglés) puede darse de dos formas: georeferenciada cuando se expresa en términos de latitud, longitud y no georeferenciada cuando se expresa como dirección postal (calle, colonia, ciudad, etc.)

1.2 Descripción del Problema

Ofrecer información partiendo de la ubicación de un cliente móvil es un área que está siendo actualmente explotada. Las soluciones existentes para ofrecer este tipo de información tienen las siguientes características:

1. Consultas no georeferenciadas, es decir es el cliente quien tiene que proporcionar su dirección, calle, colonia, etc.

2. Consultas georeferenciadas usando tecnología basada en red, es decir el servicio sólo lo pueden utilizar los usuarios de la red del proveedor de servicio.

3. Conexiones a Internet utilizando WAP. Según un artículo publicado en la revista IEEE Computer [Dailey06], se estima que un usuario de telefonía celular accede sólo 30 minutos al mes a la Web utilizando su dispositivo, y en promedio envía 80 mensajes de texto. Lo anterior indica que el

Page 16: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

4

acceso a Internet por medio de dispositivos móviles no tiene tanto impacto como el envío de mensajes SMS. Por otro lado, al usar la red del proveedor de servicio para obtener la ubicación del cliente móvil, se crea una dependencia con el mismo. Utilizando una técnica de posicionamiento distinta se puede prescindir de esa dependencia. El problema que dio origen a esta tesis es que no existen aplicaciones para dispositivos móviles que realicen consultas georeferenciadas a través de mensajería SMS utilizando el sistema de posicionamiento global.

1.3 Objetivo

Desarrollar un conjunto de funciones que permita implementar aplicaciones en dispositivos móviles para procesar consultas georeferenciadas utilizando mensajería SMS y el sistema de posicionamiento global GPS.

1.4 Justificación

Existen datos estadísticos que sustentan el desarrollo de aplicaciones basadas en localización para dispositivos móviles utilizando como medio de transporte los mensajes SMS. En primer lugar el número de usuarios de telefonía móvil en México rebasa los 60 millones. Ver Figura 1.1. Lo que indica que existe un mercado potencial para la utilización de SMS para el envío de consultas basadas en localización.

0.1 0.2 0.3 0.4 0.6 0.7 1.0 1.7 3.37.7

14.1

21.825.9

30.1

38.5

47.1

57.061.4

0.00

10.00

20.00

30.00

40.00

50.00

60.00

70.00

Mill

ones

de

usua

rios

1990

1991

1992

1993

1994

1995

1996

1997

1998

1999

2000

2001

2002

2003

2004

2005

2006

May-07

C1

Figura 1.1 Usuarios de telefonía móvil en México [cofetel07]

FUENTE; Dirección de información Estadística de Mercados, COFETEL

Usuarios de telefonía celular en México

Page 17: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

5

Actualmente la mayoría de los servicios de localización ofrecidos, requieren una conexión a Internet por medio del dispositivo móvil. Para que un usuario pueda realizar este tipo de conexiones en la mayoría de los casos requiere ser cliente de pospago. En la Figura 1.2 se muestra que sólo el 7.6 % del total de los usuarios de telefonía móvil son clientes de pospago, esta es una justificante más para el uso de SMS.

Figura 1.2 Usuarios de telefonía celular de prepago y pospago en México [cofetel07] Según el sitio de Internet de Latinia [latinia07] en México se envían más de 60 millones de mensajes SMS al día por lo que se estima que en el 2009 el valor del mercado de la mensajería móvil se expandirá hasta alcanzar el billón de dólares. La telefonía móvil es uno de los segmentos más dinámicos de las telecomunicaciones, sector que el año pasado superó en dos y media veces el crecimiento de la economía nacional en conjunto y que, incluso, ha sido uno de los factores que han influido en la desaceleración de los servicios fijos.[latinia07] En el 2011, los servicios basados en localización alcanzarán un total de 315 millones de usuarios en el mundo, según estudios recientes de ABI Research [abiR06].

0

10

20

30

40

50

60

1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 Jun-07

PospagoPrepago

92.4%

7.6 %

Millo

nes

de u

suar

ios

Usuarios de Prepago y Pospago en México

FUENTE: Dirección de Información Estadística de Mercados, COFETEL.

0

10

20

30

40

50

60

1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 Jun-07

PospagoPrepago

92.4%

7.6 %

Millo

nes

de u

suar

ios

Usuarios de Prepago y Pospago en México

FUENTE: Dirección de Información Estadística de Mercados, COFETEL.

Page 18: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

6

1.5 Beneficios

El principal beneficio que se obtuvo de esta tesis es una herramienta para desarrollar aplicaciones móviles basadas en localización utilizando GPS como tecnología de posicionamiento y mensajes SMS como medio de transporte. Las aplicaciones que pueden realizarse con esta herramienta son:

Consulta de servicios o sitios de interés cercanos. Aplicaciones que a partir de la ubicación del cliente (georeferenciada o no georeferenciada) solicitan información a un servidor acerca de los sitios de interés o servicios cercanos, por ejemplo: hospitales, restaurantes, cines, taxis, etc. Consulta de eventos cercanos. Aplicaciones que a partir de la ubicación del cliente (georeferenciada o no georeferenciada) solicitan información a un servidor a cerca de los eventos cercanos, por ejemplo: eventos sociales, culturales, políticos, religiosos. Consulta de rutas. Aplicaciones que solicitan información a un servidor acerca de la ruta a seguir para llegar de un lugar a otro. Consulta de las condiciones del clima. Aplicaciones que solicitan información climatológica. Registro de información de ubicación. Aplicaciones para registrar puntos de interés o eventos con datos georeferenciados o no georeferenciados.

1.6 Antecedentes

Se han considerado como antecedentes las tesis realizados en el cenidet en las que se desarrollaron aplicaciones para dispositivos móviles. En la Figura 1.3, se puede observar la ubicación de esta tesis con respecto a los antecedentes. Se resalta con doble línea el presente trabajo de tesis.

Figura 1.3 Ubicación de la tesis respecto a sus antecedentes

Desarrollo Móvil

Orientado a conexión No orientado a conexión

Conexiones persistentes

Conexiones no persistentes

API SMS

Prototipo de comercio electrónico con WAP[Lira06]

Prototipo de comercio electrónico con GPS

[Ruiz05]

Moviweb [Rojas06]

Page 19: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

7

1.7 Trabajos relacionados.

En primer lugar se describen los servicios basados en localización ofrecidos por las operadoras de telefonía móvil en México, los costos están expresados en pesos y actualizados al mes de Septiembre de 2007. Posteriormente se abordan las APIs relacionadas con esta tesis.

1.7.1 Unefon [unefon06] Servicios ofrecidos: Ubícame y Ubícalos, con los que se pueden localizar usuarios de la red unefon y sitios de interés cercanos. Acceso al servicio:

• SMS: El usuario se da de alta enviando un mensaje con el código SLSB al 7527, para localizar usuarios móviles se envía un SMS con la letra L + Num de 10 dígitos al número 56225, para localizar sitios de interés se envía: palabra _ clave al número 56225.

Costos $6.90 por mensaje. • Aplicación loc_aid people que debe ser descargada al celular.

Disponible sólo para los equipos Kyocera slider, Kyocera soho y Kyocera remix.

Costos: 5 localizaciones $46, 10 localizaciones $86, 20 localizaciones $149. El costo por descarga de la aplicación es de $0.06/Kbyte.

• Web Localiza usuarios que tengan instalada la aplicación loc-aid people desde la página Web de unefon.

Costos: 50 localizaciones $172, 100 por $230, 500 por $920, 1000 por $1380, localizaciones ilimitadas $2875.

1.7.2 Iusacell [Iusacel06] Servicios ofrecidos: localízame, localízalos, lugares, direcciones, con los que se pueden localizar usuarios de la red iusacell y sitios de interés. Acceso al servicio:

• Por medio de una aplicación llamada ubicacel que debe ser descargada al celular. Disponible sólo para los equipos LG mx500, LG mx200, LG mx8700, LG 240, LG mx210, Motorola E815, Motorota V710, Motorota V3 Razr, Amoi V810, Kyocera koi, Kyocera thunder.

• Web Localiza usuarios que tengan instalada la aplicación anterior desde la página Web de iusacell.

Page 20: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

8

• Costos: Pospago: Suscripción: $57.50. Compra por 30 días $69, por 180 días $345. Prepago: Compra por 365 días $632.

1.7.3 Movistar [movi07] Servicio ofrecido: Localízame, con el que se pueden localizar usuarios de la red movistar. Acceso al servicio:

• SMS: El usuario se da de alta enviando un mensaje de texto con el código ALTA al número 5622, para localizar usuarios se da de alta un alias para cada usuario a localizar enviando un SMS con el código agregar+número de 10 dígitos+alias_deseado, y el código para localizar es localizar+alias al número 5622.

• Web: Localiza usuarios desde la página Web de movistar. Costos: $3.45 por localización.

1.7.4 Sección amarilla [amari07] Servicio ofrecido: El usuario busca servicios proporcionando datos de su ubicación. Acceso al servicio:

• SMS: Se envía un SMS con alguna de las cinco modalidades para hacer la búsqueda de servicios: servicio_a_buscar + estado + colonia; nombre_comercial + estado + colonia; servicio_a_buscar + estado; servicio_a_buscar + estado + delegación/municipio + colonia; servicio_a_buscar+CP el mensaje se envía al 25800 y está disponible sólo para usuarios telcel.

Costos: $5 por mensaje.

1.7.5 Nextel [nextel06] Servicios ofrecidos: iLocator, iFollow, con los que se pueden localizar usuarios de la red nextel y realizar reportes de localización por día. Acceso al servicio:

• No se especifica. • Costos: iLocator $189.75 al mes, iFollow $264 al mes.

En la Tabla 1.1 se muestra la comparativa de los servicios anteriores con la tesis.

Page 21: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

9

Tabla 1.1 Comparativa de los servicios de localización con la tesis.

Nom

bre

Técn

ica

de

loca

lizac

ión

Cob

ertu

ra

Con

sulta

s ge

oref

eren

ciad

as

Con

sulta

s no

ge

oref

eren

ciad

as

Con

sulta

de

sitio

s de

inte

rés

Con

sulta

de

Even

tos

Con

sulta

de

cam

inos

Con

sulta

de

clim

a

Unefon AGPS Red Unefon

Iusacell AGPS Red Iusacell

Movistar Basada en Red

Cobertura Movistar

Sección amarilla

No utiliza Red Telcel

Nextel Basada en Red Red Nextel

Proyecto Tesis GPS Todas

Además de los servicios ofrecidos por los operadores telefónicos se encontraron dos APIs que se relacionan con la tesis.

1.7.6 Location Adquisition API [jsr179] Es una API en C++ diseñada para dispositivos Nokia series 60. Permite utilizar distinto hardware y tecnologías de posicionamiento para adquirir la ubicación del dispositivo móvil. 1.7.7 JSR 179 Location API [jsr179] Es una API en java para dispositivos móviles. Permite obtener la ubicación del cliente móvil a partir de distintas tecnologías de posicionamiento. En la Tabla 1.2 se muestra una comparativa entre las APIs y este trabajo de tesis.

Tabla 1.2 Comparativa de APIs de localización con la tesis

API Adquisición de

ubicación mediante GPS

Envío de información

georeferenciada / no georeferenciada

Recepción de información

georeferenciada / no georeferenciada

Uso de SMS

Location Acquisition

JSR 179 Location

Tesis

Page 22: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

10

La principal diferencia con las APIs existentes es que éstas sólo obtienen la ubicación del dispositivo móvil, en cambio la tesis proporciona funciones para realizar e interpretar tramas de consulta y respuesta, además de funciones de envío y recepción de la información a través de mensajes SMS.

1.8 Alcance del proyecto de tesis

El presente trabajo de tesis es parte de una arquitectura cliente-servidor que ofrece servicios basados en localización. En la Figura 1.4 se muestra dicha arquitectura. El presente trabajo se centra en el área del cliente. La parte del Servidor corresponde a la tesis Gateway sms pull para servicios basados en localizacion con una arquitectura de servicios web [Qbp07]

Figura 1.4 Arquitectura LBS

El trabajo de tesis tiene los siguientes alcances:

1. Se realizó una API para dispositivos móviles con conexión Bluetooth y que soporten J2ME con configuración CDLDC 1.0 y perfil MIDP 2.0. En el Anexo C se listan los dispositivos que cumplen estos requisitos.

Page 23: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Introducción

11

2. La API contiene funciones para la conexión del dispositivo móvil con un receptor GPS por medio de bluetooth

3. La API contiene funciones para realizar e interpretar tramas de consulta y respuesta.

4. Contiene funciones para enviar y recibir información utilizando mensajería SMS.

5. La Visualización de la respuesta es en modo texto.

1.9 Organización del documento

En el capítulo 2 Marco Teórico, se presentan los conceptos sobre las tecnologías involucradas en el desarrollo de la tesis. En el capítulo 3 Análisis y diseño, se muestran los casos de uso, escenarios, diagramas de actividad, clases y secuencia que representan el análisis y diseño de la API realizada. En el capítulo 4 Implementación, se explica el uso de la API. En el capítulo 5 Pruebas, se presentan los resultados de las pruebas. En el capítulo 6 Conclusiones, se presentan las aportaciones de la tesis, los trabajos futuros y las publicaciones realizadas durante el desarrollo de la tesis. En el anexo A se encuentra la documentación de la API, en el B el código utilizado para el desarrollo de las aplicaciones de prueba, en el C los dispositivos que cumplen con el perfil MIDP 2.0 y el anexo D describe el plan de pruebas basado en el IEEE std 829.

Page 24: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

CAPÍTULO 2 MARCO TEÓRICO

Page 25: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

En este capítulo se presenta la teoría relacionada con este trabajo de tesis. Se inicia describiendo los conceptos relacionados con la programación, se continúa con comunicación móvil y SMS, posteriormente se describen los LBS y para terminar se menciona el protocolo utilizado para la comunicación con dispositivos GPS.

Page 26: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 27: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

15

2.1 Elementos de Programación

2.1.1 API API (Application Programming Interface) Interfaz de Programación de Aplicaciones, es un conjunto de especificaciones de comunicación entre componentes de software. Representa un método para conseguir abstracción en la programación, generalmente (aunque no necesariamente) entre los niveles o capas inferiores y los superiores del software. Uno de los principales propósitos de una API consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evitándose el trabajo de programar todo desde el principio. Las APIs asimismo son abstractas: el software que proporciona una cierta API generalmente es llamado la implementación de esa API. [apiwiki06] Otra definición dice que una API es el método específico prescrito por un sistema operativo o por cualquier otra aplicación mediante el cual un programador que escribe una aplicación puede hacer solicitudes al sistema operativo o a otra aplicación. [gamar06]

2.1.2 J2ME J2ME. Java 2 Micro Edition es la versión java orientada al desarrollo de aplicaciones para dispositivos con capacidades restringidas tanto en pantalla gráfica, como en procesamiento y memoria (teléfonos celulares, PDAs, etc). Tiene componentes básicos que la diferencian de las otras versiones, como el uso de una máquina virtual denominada KVM (Kilo Virtual Machine, debido a que requiere sólo unos pocos Kilobytes de memoria para funcionar) en lugar de la JVM clásica, inclusión de un pequeño y rápido recolector de basura.[jst07] La Figura 2.1 representa toda la tecnología Java. Sobre la máquina virtual vienen las APIs. J2ME está construido en una arquitectura de dos niveles: configuraciones y perfiles. Las configuraciones definen la plataforma mínima para un grupo de dispositivos con requerimientos similares de memoria y poder de procesamiento. Las configuraciones proveen las librerías mínimas que todo desarrollador está esperando encontrar disponible en todos los dispositivos de esta categoría. Los perfiles descansan encima de las configuraciones y su propósito es proveer mayor funcionalidad, APIs especializadas para una familia de dispositivos en particular.[Caic04]

Page 28: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

16

Figura 2.1 Plataforma Java 2

Existen dos configuraciones, CDC (Connected Device Configuration, Configuración para dispositivos conectados) y CLDC (Connected Limited Device Configuration, Configuración para dispositivos de conexión limitada). Sobre los cuales descansan los siguientes perfiles: Foundation Profile: Este perfil define una serie de APIs sobre la CDC orientadas a dispositivos que carecen de interfaz gráfica como, por ejemplo, decodificadores de televisión digital.[Galvez03] Personal Profile. Diseñado para extender la funcionalidad definida por la especificación CDC. Personal Profile incluye APIs para soporte de dispositivos con interfaces gráficas de usuarios basadas en AWT (Abstract Window Toolkit). El objetivo es el de dotar a la configuración CDC de una interfaz gráfica completa, con capacidades Web y soporte de applets Java. Este perfil requiere una implementación del Foundation Profile.[Galvez03] MIDP. Mobile Information Device Profiles. Diseñado para extender la funcionalidad definida por la especificación CLDC. MIDP define APIs que incluyen: soporte para interfaz de usuarios, soporte para trabajo en red, soporte para almacenamiento persistente.[Caic04] Un MIDlet es una aplicación java realizada con el perfil MIDP sobre la configuración CLDC. El AMS (Application Management System, Sistema gestor de aplicaciones) es el software encargado de gestionar los MIDlets. Este software reside en el dispositivo y es el que permite ejecutar, pausar o destruir las aplicaciones J2ME.[Galvez03]

Page 29: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

17

2.2 Comunicaciones móviles

2.2.1 Tecnología GSM GSM (Global System for Mobile Communications) Sistema Global para las Comunicaciones Móviles, formalmente conocida como "Group Special Mobile" (Grupo Especial Móvil) es un estándar mundial para teléfonos móviles digitales. El estándar fue creado por la CEPT (Conferencia Europea de Administraciones de Correos y Telecomunicaciones) y posteriormente desarrollado por ETSI (Instituto de Estándares de Telecomunicación) como un estándar para los teléfonos móviles europeos, con la intención de desarrollar una normativa que fuera adoptada mundialmente. [wikiGSM] La Figura 2.2 muestra la arquitectura de la red GSM

Figura 2.2 Arquitectura GSM [Roldan05]

A continuación se describen cada uno de los elementos [Roldan05], [arqGSM06] 1.- MS (Mobile Station) Estación Móvil: Consta a su vez de dos elementos básicos, por un lado el equipo móvil y por otro lado el SIM (Subscriber Identity Module). El SIM es una pequeña tarjeta inteligente que sirve para identificar las características del equipo móvil. Esta tarjeta se inserta en el interior del móvil y permite al usuario acceder a todos los servicios que haya disponibles por su operador, sin la tarjeta SIM el dispositivo móvil no sirve de nada por que no puede hacer uso de la red. 2.- BSS (Base Station Subsystem) Sistema de Estación Base: Sirve para conectar a las estaciones móviles con los NSS (Network and Switching Subsystem), además de ser los encargados de la transmisión y recepción. Consta de dos elementos diferenciados:

BTS (Base Transceiver Station) Transceptores de Estación Base: dan cobertura de radio a una o varias células e incorporan los equipos transmisores y receptores que interactúan con los equipos móviles.

Page 30: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

18

BSC (Base Station Controller) Controladores de Estación Base. Constituyen la interfaz de las estaciones base con el sistema de conmutación, a través del cual se conecta la red móvil con las otras redes.

3. NSS (Network and Switching Subsystem) Subsistema de Conmutación y Red: Este sistema se encarga de administrar las comunicaciones que se realizan entre los diferentes usuarios de la red; para poder hacer este trabajo la NSS se divide en sistemas diferentes, cada uno con una misión dentro de la red:

MSC (Mobile Services Switching Center) Central de conmutación de móviles: Es el componente central del NSS y se encarga de realizar las labores de conmutación dentro de la red, así como de proporcionar conexión con otras redes.

GMSC (Gateway Mobile Services Switching Center) Gateway central de conmutación de móviles: Un gateway es un dispositivo traductor (puede ser software o hardware) que se encarga de interconectar dos redes haciendo que los protocolos de comunicaciones que existen entre ambas redes se entiendan. La misión del GMSC es esta misma, servir de mediador entre las redes de telefonía fijas y la red GSM.

HLR (Home Location Registrer) Registro de abonados locales: El HLR es una base de datos que contiene información sobre los usuarios conectados a un determinado MSC. Entre la información que almacena el HLR tenemos fundamentalmente la localización del usuario y los servicios a los que tiene acceso. El HRL funciona en unión con el VLR (Visitor Location Register).

VLR (Visitor Location Register) Registro de abonados visitantes: contiene toda la información sobre un usuario, necesaria para que dicho usuario acceda a los servicios de red. Forma parte del HLR con quien comparte funcionalidad.

4. OSS (Operation and Support Subsystem) Subsistemas de soporte y Operación: Se conectan a diferentes NSS y BSC para controlar y monitorizar toda la red GSM. Esta formada por:

AuC (Authentication Center) Centro de autentificación: Proporciona los parámetros necesarios para la autentificación de usuarios dentro de la red; también se encarga de soportar funciones de encriptación.

EIR (Equipment Identy Registrer) Registro de Identidad del equipo: También se utiliza para proporcionar seguridad en las redes GSM pero a nivel de equipos válidos. La EIR contiene una base de datos con todos los terminales que son válidos para ser usados en la red. Esta base de datos contiene los IMEI (International Mobile Equipment Identy) de cada terminal, de manera que si un determinado móvil trata de hacer uso de la red y su IMEI no se encuentra localizado en la base de datos del EIR no puede hacer uso de la red.

OMC (Operation and Maintenance Center) Centro de operación y mantenimiento: proporciona los medios necesarios para poder llevar a cabo

Page 31: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

19

una gestión eficiente de la red, tanto de la parte de conmutación como la de radio.

2.2.2 SMS SMS (Short Message Service) Servicio de Mensajes cortos, es la transmisión de mensajes de texto desde y hacia un teléfono móvil, fax, y/o dirección de IP. El cuerpo del mensaje es de 140 bytes que equivalen a 160 caracteres. Permite transferir un mensaje de texto entre una estación móvil y un SME (Short Message Entity) que puede ser otra estación móvil o un nodo dentro de una red a través de un SMSC (Short Message Service Center) Centro de servicio de mensajería corta. Una vez que el mensaje se envía, este es recibido por un SMSC que debe dirigirlo al dispositivo móvil apropiado. Para hacer esto, el SMSC envía una petición de SMS al HLR para encontrar al cliente. Una vez que el HLR recibe la petición, responderá al SMSC con el estado del subscriptor: 1) inactivo o activo 2). Si la respuesta es 'inactivo', entonces el SMSC guardará el mensaje por un período de tiempo. Cuando el subscriptor accede a su dispositivo, el HLR envía una Notificación SMS al SMSC, y el SMSC intentará la entrega. El SMSC recibe comprobación que el mensaje se recibió por el usuario final, entonces marca el mensaje como 'enviado' y no intentará enviarlo de nuevo. [actExp06] El servio SMS se divide en dos servicios básicos: [gpp06] 1. SM MT (Short Message Mobile Terminated Point-to-Point). Servicio de entrega de un mensaje desde el SMSC hasta una MS, obteniéndose un informe sobre lo ocurrido. 2. SM MO (Short Message Mobile Originated Point-to-Point). Servicio de envío de un mensaje desde una MS hasta un SMSC, obteniéndose un informe sobre lo ocurrido. La arquitectura básica para el servicio SMS se muestra en la Figura 2.3 Las entidades involucradas son las siguientes: MS: Estación móvil. Dispositivo móvil. MSC: Centro de conmutación. SMS-GMSC: Gateway MSC para el servicio de mensajes cortos (Servicio SM MT). SMS-IWMSC: MSC de interconexión entre PLMN y el SC (Servicio SM MO).

Page 32: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

20

Figura 2.3 Estructura básica de la red para la transferencia de SMS

Para la descripción detallada de la arquitectura, se utiliza un modelo de capas, en el que cada capa o nivel proporciona un servicio a la capa superior, y este servicio se implementa mediante el protocolo correspondiente. La arquitectura se divide en 4 capas. Ver Figura 2.4

1. SM-AL (Short Message Application Layer): Nivel de aplicación. 2. SM-TL (Short Message Transfer Layer): Nivel de transferencia. Servicio de

transferencia de un mensaje corto entre una MS y un SC (en ambos sentidos) y obtención de los correspondientes informes sobre el resultado de la transmisión. Este servicio hace abstracción de los detalles internos de la red, permitiendo que el nivel de aplicación pueda intercambiar mensajes.

3. SM-RL (Short Message Relay Layer): Nivel de repetición. Proporciona un servicio al nivel de transferencia que le permite enviar TPDU (Transfer Protocol Data Units) a su entidad gemela.

4. SM-LL (Short Message Lower Layers): Niveles inferiores.

Figura 2.4 Niveles y servicios para el envío de mensajes cortos.

SMS-GMSC SMS-IWMSC

MSC MS SME

SM-TL

SM-RL

SM-LL

SM-AL

HLR VLR

SMS-GMSC SMS-IWMSC MSC MS

Page 33: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

21

El nivel de interés de esta tesis es el SM-TL, que es el que se usa para enviar y recibir SMS. Nivel SM-TL Se utilizan 6 PDUs (Protocol Data Units, Protocolo de unidad de datos). Ver Figura 2.5. SMS-DELIVER: Transmitir un mensaje desde el SC al MS SMS-DELIVER-REPORT: Error en la entrega (si lo ha habido) SMS-SUBMIT: Trasmitir un mensaje corto desde el MS al SC SMS-SUBMIT-REPORT: Error en la transmisión (Si lo ha habido) SMS-STATUS-REPORT: Transmitir un informe de estado desde el SC al MS SMS-COMMAND: Transmitir un comando desde el MS al SC

Figura 2.5 PDUs utilizados en la capa SM-TL

SMS-SUBMIT La estructura de la PDU SMS-SUBMIT se muestra en la Figura 2.6

Figura 2.6 Trama SMS-SUBMIT

Figura 2.7 Detalle del campo SCA

MS SMS-DELIVER

SMS-DELIVER-REPORT

MS SMS-COMMAND

SMS-STATUSR-REPORT

MS SMS-SUBMIT

SMS-SUBMIT-REPORT

Page 34: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

22

. Los campos que la componen son los siguientes: SCA: Número de teléfono del Centro de Servicio (SC). La estructura detallada

se muestra en la Figura 2.7. Consta de los siguientes campos: • Longitud: Número de dígitos del teléfono del SC. • Tipo de número: Indica si se trata de un número nacional o internacional:

o 81h: Nacional o 91h: Internacional

• Dígitos BCD: Número de teléfono del SC, en dígitos BCD

PDU-TYPE: Contiene información sobre el tipo de PDU • RP: Existe camino de respuesta. RP=0 en tramas de tipo SMS-SUBMIT • UDHI: Indica si el campo UD contiene sólo el mensaje corto (UDHI=0) o si

existe una cabecera antes del mensaje corto (UDHI=1) • SRR: Informe de estado no solicitado (SRR=0) o sí solicitado (SRR=1) • VPF: Indica si el campo VP está o no presente • RD: Rechazar o no duplicados • MTI: Tipo de mensaje. Ver Tabla 2.1

Tabla 2.1 Descripción de valores de MTI Bit 1 Bit 0 Descripción

0 0 SMS-DELIVER 0 0 SMS-DELIVER-REPORT 0 1 SMS-SUBMIT 0 1 SMS-SUBMIT-REPORT 1 0 SMS-STATUS_REPORT 1 0 SMS-COMMAND 1 1 Reservado

MR: Parámetro para identificar el mensaje DA: Dirección del SME destino (número de teléfono) PID: Identificación del protocolo de la capa superior DCS: Identificación del tipo de codificación dentro de los datos de usuario VP: Periodo de validez del mensaje UDL: Longitud del campo UD UD: Datos de usuario

SMS-DELIVER Esta trama, transmitida desde el SC hasta el MS, tiene una estructura similar a SMS-SUBMIT y se muestra en la Figura 2.8.

Page 35: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

23

Figura 2.8 Trama SMS-DELIVER

Los nuevos campos que aparecen son los siguientes: OA: Dirección del SME que envía el mensaje SCTS: Marca de tiempo de cuando el centro de servicio recibió el mensaje.

2.3. LBS. Servicios basados en localización

2.3.1 Definición Las NICTs (New Information and Communication Technologies, Tecnologías Nuevas de Información y Telecomunicación), describe a los LBS como una intersección entre: sistemas y dispositivos móviles de comunicación, Internet y GIS (Geographic Information Systems, Sistemas de información geográfica) con base de datos espaciales. [Neun06] Ver Figura 2.9

Figura 2.9 LBS como intersección de tecnologías

En la Figura 2.9 se observa que existen algunas características en común entre los LBS y los GIS, tales como el manejo de datos con referencia posicional y funciones de análisis espacial, las cuales responden preguntas como: ¿Dónde estoy…? ¿Qué está cerca de…? ¿Cómo puedo llegar a…? Sin embargo los LBS y los GIS tienen diferentes orígenes y grupos de usuarios. Los GIS han sido desarrollados durante varias décadas en base a aplicaciones de datos geográficos profesionales, mientras que los LBS surgieron recientemente por la evolución de servicios móviles públicos. En lo que se refiere a grupos de

Page 36: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

24

usuarios, los GIS pueden ser vistos como un sistema profesional y tradicional, destinado a usuarios con amplia experiencia en sistemas geográficos, además de que consumen extensos recursos de cómputo. En contraste los LBS se desarrollan como servicios limitados para un gran número de usuarios no profesionales. La aplicaciones LBS operan con las restricciones del ambiente de cómputo móvil como baja potencia computacional, pantallas pequeñas, o limitaciones debidas al alto consumo de batería.

2.3.2 Componentes Los elementos necesarios para el funcionamiento de los LBS se muestran en la Figura 2.10 [Magon06]

Figura 2.10 Componentes básicos LBS

Posicionamiento o localización. Se refiere a la forma de determinar la posición del dispositivo móvil. Existen distintas tecnologías de posicionamiento entre las que destacan las basadas en red y las basadas en dispositivos, Datos geográficos. Se refiere al GIS que funciona como una base de datos con información geográfica (datos alfanuméricos) que se encuentra asociada por un identificador común a los objetos gráficos de un mapa digital. De esta forma, señalando un objeto se conocen sus atributos e, inversamente, preguntando por un registro de la base de datos se puede saber su localización en la cartografía. Red de comunicaciones. Se refiere al medio de transporte de datos. La información de ubicación puede enviarse por medio de SMS o de datos utilizando GPRS Centro de control. Es el administrador de los datos, recibe la información de ubicación, accede al GIS para poder satisfacer los requerimientos del usuario y envía la respuesta.

Page 37: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

25

2.3.3 Funcionamiento Se describe el proceso en los siguientes pasos: (Ver Figura 2.11) [Neun06]

1. Obtener la posición del dispositivo móvil y enviar la solicitud, la cual contiene el objetivo de la búsqueda para una posición a través de la red de comunicaciones a un determinado gateway.

2. El gateway tiene la tarea de intercambiar mensajes entre la red de comunicación e Internet. Encamina la solicitud a un servidor específico. El gateway también guardará información acerca del dispositivo que ha solicitado la información.

3. El servidor de aplicaciones lee la solicitud y activa el servicio apropiado.

4. El servicio analiza nuevamente el mensaje y decide que información adicional necesita, además del criterio de búsqueda y posición de usuario.

5. El servicio encontrará la información necesaria que satisfaga la solicitud.

6. Teniendo toda la información necesaria, el servicio hará una consulta de ruteo, para obtener la respuesta a la solicitud. Una vez obtenida la respuesta, ésta se envía al usuario.

Los resultados se pueden presentar al usuario ya sea como una lista de texto, o un dibujo en un mapa.

Figura 2.11 Funcionamiento LBS

Dispositivos móviles

Posicionamiento GPS

Red de comunicaciones

Internet Servidor

Envío de SMS

BD

Page 38: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

26

2.3.4 Clasificación Los LBS se pueden clasificar según las necesidades que satisfacen. En la Tabla 2.2 se resumen las necesidades que satisfacen los LBS. [Neun06]

Tabla 2.2 Necesidades de los usuarios móviles.

Acción Preguntas Operaciones

Orientación y localización. ¿Dónde estoy? ¿Dónde está…?

Posicionamiento, geocodificación.

Navegación a través de espacio, trazado de ruta. ¿Cómo puedo llegar a? Posicionamiento,

geocodificación, ruteo.

Búsqueda de personas y objetos.

¿Qué hay cerca o de interesante…?

Posicionamiento, geocodificación, cálculo de distancia y área, búsqueda de relaciones.

Identificación y reconocimiento de personas u objetos.

¿Qué es? Directorio, selección, búsqueda temática o espacial.

Verificación de eventos, determinación del estado de objetos.

¿Qué ocurre aquí, allá, etc.?

Posicionamiento, cálculo de área, geocodificación, búsqueda de relaciones.

En la Figura 2.12 se muestra la clasificación de los LBS según las necesidades que satisfacen.

Figura 2.12 Clasificación de los LBS

Page 39: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

27

2.4. Técnicas de posicionamiento

Existen diferentes tecnologías para obtener la ubicación del dispositivo móvil. Las cuales se clasifican como se muestra en la Figura 2.13. [Neun06],[Barbolla03],[Venturin03],[Gens06],[esri07]

Figura 2.13 Clasificación de las técnicas globales de posicionamiento

Se mencionarán las técnicas de la rama resaltada; es decir las técnicas basadas en redes móviles y satelitales, se tienen entonces las tecnologías basadas en red y las tecnologías basadas en dispositivos móviles y las combinaciones que resultan de éstas. Los principios básicos para el cálculo de la posición del dispositivo móvil son:

Las BS (Base Station) estaciones base que tienen una posición conocida.

La información de una señal que es transformada en distancia.

El cálculo de posición, usando las distancias obtenidas de las BS.

Técnicas de posicionamiento

Basada en redes móviles y satélites

Basada en redes inalámbricas

Bluetooth

Wi Fi

Infrarrojos

Banda Ultra-ancha

Basadas en red

Basadas en el dispositivo móvil

Page 40: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

28

2.4.1 Técnicas basadas en red • COO- Cell ID Cell of Origin

Célula de origen. Es la forma básica de localización, consiste en encontrar la célula en la que el dispositivo está siendo usado. Por su escasa precisión se puede utilizar como respaldo para otras implementaciones. Ver Figura 2.14. La técnica se puede perfeccionar teniendo en cuenta el parámetro de avance temporal, convirtiéndose en una de las técnicas CGI perfeccionadas E-Cell-ID (Enhaced Cell- Identity) Identificador de Célula Mejorado.

Figura 2.14 Técnica de localización Cell of Origin - Cell ID

• AOA Angle of Arrival

Ángulo de llegada. Este método utiliza antenas multiarray situadas en la estación base para determinar el ángulo de la señal incidente. Si un dispositivo que transmite una señal está en la Línea de Vista Directa (LOS, Line Of Sight), la antena multiarray puede determinar de qué dirección viene la señal. Para conocer la posición del dispositivo es necesaria al menos una segunda estimación procedente de otra estación base con la misma tecnología que la primera. La segunda estación base localizará al dispositivo y comparará sus datos con los de la primera estación para después calcular la posición del usuario mediante trigonometría. Ver Figura 2.15

Figura 2.15 Técnica de localización Angle of Arrival

Page 41: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

29

• TOA Time Of Arrival Tiempo de llegada. Esta técnica se basa en la medición del tiempo de llegada de una señal transmitida por un dispositivo móvil a diferentes estaciones base. Para efectuar el cálculo una posibilidad es medir el tiempo de ida y vuelta de la señal. De esta manera la distancia recorrida por la señal se calcula como producto del tiempo empleado en llegar a la BTS (Base Transceiver Station, Estación base de transmisión-receptores) y la velocidad de la luz. Ver Figura 2.16

Figura 2.16 Técnica de Localización Time of Arrival

• TDOA Time Difference Of Arrival

Diferencia en el tiempo de llegada. TDOA emplea la diferencia entre los tiempos de llegada de la señal procedente del dispositivo móvil a distintos pares de estaciones base para calcular la posición. Puesto que la curva cuyos puntos satisfacen la condición de que su distancia a dos referencias (en este caso un par de estaciones base) sea una constante es una hipérbola, si se calcula esta correlación para varios pares de estaciones base, la intersección de las hipérbolas resultantes muestra el punto donde se encuentra el dispositivo móvil. Figura 2.17

Figura 2.17 Técnica de localización Time Difference Of Arrival

• Multipath Fingerprint Huella multiruta. Esta técnica aprovecha una de las perturbaciones más molestas a la hora de localizar un dispositivo móvil: las señales multitrayecto. Una señal, ya sea ascendente o descendente, puede sufrir reflexiones en el transcurso de su recorrido, causando lo que se denomina interferencia multitrayecto. La señal destino se recibe varias veces debido a los retardos dependientes de la diferencia de caminos.

Page 42: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

30

La huella multitrayecto es una técnica que caracteriza las señales que llegan desde diferentes localizaciones. Para ello, el operador debe enviar unidades de prueba a distintos lugares con el fin de que las estaciones base graben las huellas multitrayecto y creen una base de datos para efectuar comparaciones. Por ejemplo, si se levanta un nuevo edificio la huella multitrayecto variará y tendrá que ser regrabada. Ver Figura 2.18

Figura 2.18 Técnica de localización Multipath Fingerprint

2.4.2 Técnicas basadas en la modificación del dispositivo móvil • Time of Arrival modificado

El concepto que sostiene esta técnica es el mismo que el del método TOA, con la salvedad de que en este caso el dispositivo es capaz de marcar el instante exacto de la señal saliente mediante marcas temporales (time stamps). De esta manera, repitiendo las medidas para un mínimo de tres estaciones base es posible localizar el móvil. La desventaja de este método y lo que lo hace realmente complejo y caro, es que requiere que las estaciones base y el dispositivo móvil tengan relojes precisos y sincronizados. • Enhanced Observed Time Difference, E-OTD

Diferencia de tiempo de llegada perfeccionada. La posición del dispositivo móvil se obtiene mediante triangulación a partir de:

• Las coordenadas de las BTSs, • El tiempo de llegada de las ráfagas de cada BTS, • Las diferencias de tiempo entre las BTSs.

• Advanced Forward Link Trilateration A-FLT

Trilateración avanzada de enlace hacia delante. La técnica A-FTL es exclusiva para redes CDMA, pues éstas son síncronas en operación. El método es muy similar al TDOA: consiste en efectuar la medida del retardo de fase entre señales enviadas a un par de estaciones base, y compararla con la medida de otro par. Los datos procedentes de tres estaciones base permiten localizar un dispositivo

Page 43: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

31

móvil. También existe otra técnica mejorada con los mismos fundamentos que AFLT, que es EFLT (Enhanced Forward Link Trilateration) • Global Positioning System GPS

El Sistema de Posicionamiento Global es un sistema de radionavegación mundial que emplea al menos tres de los satélites que rodean la Tierra en órbitas conocidas para fijar la posición de una unidad móvil. El fundamento de la localización con GPS es la triangulación, cálculo de la distancia de un punto terrestre a tres o más satélites con posición perfectamente conocida. Ver Figura 2.19.

Figura 2.19 Cálculo de la ubicación a partir de tres satélites GPS

• Differential GPS

GPS diferencial, este sistema utiliza para el cálculo de posición la señal de los satélites y la información proveniente de una o más estaciones de coordenadas conocidas. Las estaciones de referencia transmiten las correcciones que calculan constantemente comparando su posición obtenida mediante los satélites con sus coordenadas reales. • A-GPS Assisted GPS

GPS asistido, es una implementación de DGPS donde el receptor de señal GPS está integrado en el dispositivo y la red de telecomunicación es usada para enviar los datos de corrección al dispositivo. Ver Figura 2.20. De esta manera, GPS asistido es actualmente la combinación de diferentes técnicas:

• Una red de telefonía móvil como GSM • Dispositivo móvil con GPS integrado. • Una red DGPS para corrección de DGPS. • Servidor de localización.

Page 44: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

32

Figura 2.20 Técnica de localización A-GPS

2.4.3 Comparativa de tecnologías En la Tabla 2.3 se muestra la comparación entre las distintas tecnologías

Tabla 2.3 Resumen comparativo de las tecnologías de localización

Tecnología Precisión Basada en red

Basada en dispositivo Híbrida Red de

telecomunicación

COO, Cell ID

Depende del tamaño de la

célula 500m - 5Km

Todas

AOA 100m – 200m Todas

TDOA 100m – 200m Todas

AFLT 50m – 200m CDMA

EOTD 50m – 200m GSM

GPS 10m-50m Todas

AGPS, DGPS 5m - 30m Todas

2.5 Protocolo NMEA

La interfaz de hardware para GPS se diseñó para reconocer especificaciones NMEA (National Marine Electronics Association, Asociación Marina Nacional de Electrónica) NMEA es una asociación de fabricantes, distribuidores, instituciones educacionales y otros interesados en equipos periféricos marinos sin fines de lucro. La definición estándar de un NMEA 0183 es una interfase eléctrica y un protocolo de datos para la comunicación entre instrumentos marinos. [nmea06] El estándar permite que la electrónica marina envíe la información a las computadoras. La comunicación del receptor del GPS se define dentro de esta especificación. La mayoría de los programas de computadora que proporcionan la información en tiempo real de la posición entienden y esperan que los datos estén en formato de NMEA. Estos datos incluyen la solución completa de PVT (posición, velocidad, tiempo) computada por el receptor GPS. La idea de NMEA es enviar

Page 45: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

33

una línea de datos llamada sentencia que es totalmente autónoma e independiente de otras sentencias. Hay sentencias estándares para cada categoría de dispositivo y hay también la capacidad de definir sentencias propietarias para uso de compañías particulares. Todas las sentencias estándares tienen un prefijo de dos letras que define el dispositivo que utiliza ese tipo de sentencia (Para los receptores de los GPS el prefijo es GP) que es seguida por una secuencia de tres letras que define el contenido de la sentencia. Además NMEA permite a los fabricantes de hardware definir sus propias sentencias. Todas las sentencias propietarias comienzan con la letra P seguida de 3 letras que identifican al fabricante que controla esa sentencia. [gps06]

2.5.1 Sentencias NMEA El estándar define cada sentencia NMEA como una trama con las siguientes características: • Máximo de 83 caracteres. • Cada trama comienza con el símbolo $. • Los 5 caracteres posteriores al $ define el tipo de mensaje.

Se usa la “,” para separar cada campo de datos. • Después del último campo con datos se usa el * como delimitador. • Después del * puede venir 2 dígitos en hexadecimal que es el checksum de la

trama. El checksum se calcula con el XOR de todo el string que hay entre el símbolo $ y el *.

• La primera palabra, llamada tipo de datos, define la interpretación del resto de la sentencia.

• Cada tipo de datos tiene su propia interpretación única y se define en el estándar de NMEA.

En la Tabla 2.4 se muestran algunas sentencias NMEA.

Tabla 2.4 Sentencias NMEA SENTENCIA DESCRIPCION

AAM Waypoint Arrival Alarm. Alarma de punto de llegada. ALM Almanac data.Datos del almanaque. APA Auto Pilot A sentence. Sentencia auto-piloto A. APB Auto Pilot B sentence. Sentencia auto-piloto B. BOD Bearing Origin to Destination. Portador de origen a destino. BWC Bearing using Great Circle route. Portador usando la ruta del gran círculo. DTM Datum being used. Datum que está siendo usado. GGA Fix information. Información Fija. GLL Lat/Lon data Datos de latitud/longitud. GSA Overall Satellite data. Datos globales del satélite. GSV Detailed Satellite data. Datos detallados del satélite. MSK Send control for a beacon receiver. Enviar control por una señal receptora.

MSS Beacon receiver status information. Información del estado de la señal receptora.

RMA Recommended Loran data. Datos Loran recomendados.

RMB Recommended navigation data for GPS. Datos de navegación recomendados para GPS.

Page 46: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Marco Teórico

34

RMC Recommended minimum data for GPS. Datos mínimos recomendados para GPS.

RTE Route message. Ruta de mensaje.

VTG Vector track and Speed over the Ground. Ruta del vector y velocidad sobre la tierra.

WCV Waypoint closure velocity (Velocity Made Good). POI cercano. WPL Waypoint information. Información del POI. XTC Cross track error. Error de ruta. XTE Measured cross track error. Ruta del error.

ZTG Zulu (UTC) time and time to go (to destination). Tiempo universal coordinado y tiempo de ida.

ZDA Date and Time. Fecha y hora. La sentencia GGA es la que proporciona los datos de la ubicación del GPS. Se describe en la Figura 2.21

Figura 2.21 Sentencia GGA

GGA = Datos del Fijo del Sistema Global de Posicionamiento.

1. UTC (Universal Time Coordinated, Tiempo Universal Coordinado) de Posición

2. Latitud 3. N o S 4. Longitud 5. E u O 6. Indicador de la Calidad de GPS (0=no Válido; 1=Fijo de GPS; 2=Fijo de

GPS dif.) 7. Número de Satélites en uso. 8. Dilución Horizontal de la Posición 9. Altitud de la Antena Sobre/Bajo Nivel del Mar Intermedio (geoide) 10. Metros (Unidad de la altura de la antena) 11. Separación Geoidal (Dif. entre elipsoide terrestre WGS-84 y nivel del mar

intermedio. El geoide está bajo el elipsoide WGS-84) 12. Metros(Unidad de la separación geoidal) 13. Intervalo en Segundos desde la última actualización de una estación de

referencia dif. 14. Estación de Referencia ID# dif. 15. Suma de Verificación

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh<CR><LF>

Page 47: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

CAPÍTULO 3 ANÁLISIS Y DISEÑO

En este capítulo se presentan los diagramas de caso de uso, la definición de escenarios y los diagramas de actividad que corresponden a la fase de análisis. Así mismo se presenta los diagramas de clase y de secuencia correspondiente a la etapa del diseño. Por último se describen las tramas diseñadas para el procesamiento de consultas basadas en localización.

Page 48: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 49: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

37

3.1 Análisis

Como se describió en la sección 1.8, el presente trabajo de tesis es parte de una arquitectura cliente servidor que ofrece servicios basados en localización. En la Figura 3.1, se detalla la Figura 1.4 presentada en la sección 1.8. Se marca con línea punteada la parte del proceso que le compete al presente trabajo.

Figura 3.1 Diagrama de bloques del proceso de envío / recepción de consultas georeferenciadas /

no georeferenciadas A continuación se presentan los diagramas de caso de uso, la definición de escenarios y los diagramas de actividad que corresponden a la fase de análisis de la API. En la Figura 3.2 se muestra el diagrama general de casos de uso de la API, se muestran las funciones principales que ofrece. Dado que se trata de una API se consideró como actor y usuario de la API, la aplicación que utiliza la API. Y por otra parte el dispositivo GPS que es de donde se obtienen los datos de ubicación. Se tienen como casos de uso principales

Page 50: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

38

entonces: Obtener información del GPS, Elaborar la trama, Enviar mensaje, Recibir mensaje e Interpretar la trama.

uc apisms

Aplicación LBS

CU-1 Obtener información GPS

CU-2 Elaborar trama

CU-3 Env iar trama

CU-4 Recibir respuesta

CU-5 Interpretar trama

Dispositiv o GPS

Figura 3.2 Diagrama general de casos de uso.

La Figura 3.3 se muestra el diagrama de caso de uso Obtener información del GPS. Para obtener la información del GPS primero hay que encontrar los dispositivos bluetooth cercanos, seleccionar uno de ellos para obtener su URL y por último conectarse al GPS. Se puede dar el caso en el que ya se cuente con el URL del GPS, en este caso no es necesario hacer la búsqueda de dispositivos cercanos. Este caso de uso está contemplado en el paquete mx.edu.cenidet.apisms.conexiongps.

Page 51: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

39

uc conexiongps

Sistema LBS

CU-1 Obtener información GPS

CU-1.1 Obtener dispositiv os

cercanos

CU-1.3 Conectar GPS

Dispositivo GPS

CU-1.2 Obtener URL del dispositivo seleccionado

«extend»

«include»

«extend»

Figura 3.3 Diagrama del caso de uso Obtener información del GPS

Tabla 3.1 Descripción del caso de uso Obtener información del GPS

ID: CU-1 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.4.

Nombre del caso de uso: Obtener información del GPS.

Actores: Sistema LBS, Dispositivo GPS. Descripción: Permite al usuario obtener información de ubicación del GPS.

Precondiciones: 1. El dispositivo bluetooth del celular debe estar activado.

Poscondiciones: 1. Se obtendrá la información de ubicación del GPS y estará disponible para su posterior uso.

Escenario de éxito 1:

1. Se inicia la búsqueda de dispositivos. 2. Se obtiene una lista de nombres de dispositivos. 3. Se selecciona un dispositivo y se obtiene su URL. 4. Se extraen los datos del GPS utilizando su URL. 5. terminar proceso.

Escenario de éxito 2:

1. Se cuenta con un URL. 2. Se extraen los datos del GPS utilizando su URL. 3. Terminar proceso.

Incluye: CU-1.1 Obtener dispositivos cercanos, CU-1.2 Obtener URL del dispositivo seleccionado, CU-1.3 Conectar GPS.

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

Page 52: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

40

act CU-1 Obtener informacion de gps

Buscar dispositiv os bluetooth cercanos

Dispositivoseleccionado

Conectar con el GPS

seleccionar un dispositiv o bluetooth Obtener datos de ubicación

no si

Figura 3.4 Diagrama de actividad del caso de uso CU-1 Obtener información del GPS

Tabla 3.2 Descripción del caso de uso CU-1.1 Obtener dispositivos cercanos

ID: CU-1.1 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.5.

Nombre del caso de uso: Obtener dispositivos cercanos.

Actores: Obtener datos del GPS. Descripción: Permite obtener una lista de dispositivos bluetooth cercanos.

Precondiciones: 1. El dispositivo bluetooth del celular debe estar activado.

Poscondiciones: 1. Se obtiene una lista de nombres de dispositivos bluetooth cercanos.

Escenario de éxito:

1. Se prepara el dispositivo bluetooth del celular. 2. Se inicia la búsqueda de dispositivos. 3. Se obtiene la lista de nombres de dispositivos cercanos

Escenario de fracaso 1:

1. Se prepara el dispositivo bluetooth del celular. 2. Ocurre un error con el bluetooth del celular. 3. Se lanza una excepción. 4. Termina el proceso.

Escenario de fracaso 2:

1. Se prepara el dispositivo bluetooth del celular. 2. Se inicia la búsqueda de dispositivos. 3. Se cancela la búsqueda. 4. Termina el proceso.

Page 53: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

41

Escenario de fracaso 3:

1. Se prepara el dispositivo bluetooth del celular. 2. Se inicia la búsqueda de dispositivos. 3. Se cancela la búsqueda. 4. Se lanza una excepción. 5. Termina el proceso.

Incluye:

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

act CU1-1 Buscar dispositiv os Bluetooth

Preparar el dispositiv o bluetooth

Listo

Lanzar excepción

Buscar dispositiv o

Guardar lista de nombres dedispositiv os

Cancelar

Agregar nombre de dispositiv o a lalista

Dispositiv oencontrado

Búsquedaterminada

Cancelar búsqueda

Errorsi

si

no

si

no

no

si

no

si

no

Figura 3.5 Diagrama de actividad del caso de uso CU-1.1 Obtener dispositivos cercanos

Page 54: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

42

Tabla 3.3 Descripción del caso de uso CU-1.2 Obtener URL del dispositivo seleccionado

ID: CU-1.2 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.6.

Nombre del caso de uso: Obtener URL del dispositivo seleccionado.

Actores: Obtener datos del GPS. Descripción: Permite obtener el URL de un dispositivo bluetooth.

Precondiciones: 1. El proceso del caso de uso CU-1.1 debe haber concluido

exitosamente. 2. El dispositivo debe existir en la lista.

Poscondiciones: 1. Se obtendrá el URL del dispositivo seleccionado.

Escenario de éxito:

1. Seleccionar un dispositivo de la lista indicando su índice. 2. Buscar URL. 3. Obtener URL. 4. Guardar URL. 5. Terminar proceso.

Escenario de fracaso 1:

1. Seleccionar un dispositivo de la lista indicando su índice. 2. El índice no existe. 3. Lanzar excepción. 4. Terminar proceso.

Escenario de fracaso 2:

1. Seleccionar un dispositivo de la lista indicando su índice. 2. Buscar URL. 3. Se cancela la búsqueda. 4. Se indica que la búsqueda fue cancelada. 5. Terminar proceso.

Escenario de fracaso 3:

1. Seleccionar un dispositivo de la lista indicando su índice. 2. Buscar URL. 3. Se cancela la búsqueda. 4. Se produce un error al intentar cancelar 5. Se lanza una excepción. 6. Terminar proceso.

Incluye:

1. Seleccionar un dispositivo de la lista indicando su índice. 2. Buscar URL. 3. No se puede obtener URL. 4. Indicar que no se obtuvo URL. 5. Terminar proceso.

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

Page 55: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

43

act CU-1.2 Obtener url del dispositiv o seleccionado

Seleccionar dispositiv o

Existe

Lanzar excepción

Buscar URL

Inidcar que la búsqueda se canceló

Cancelar

Guardar URLexisteURL

Cancelar búsqueda de URL

Error

Inidicar que no se pudo obtener URL

no

no

si

si

si

no

si

no

Figura 3.6 Diagrama de actividad del caso de uso CU-1.2 Obtener URL del dispositivo

seleccionado

Page 56: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

44

Tabla 3.4 Descripción del caso de uso CU-1.3 Conectar GPS

ID: CU1.3 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.7

Nombre del caso de uso: Conectar GPS.

Actores: Obtener información GPS.

Descripción: Permite conectarse al dispositivo GPS utilizando un URL para extraer la sentencia GGA (descrita en la sección 2.5.1) que contiene la información de ubicación.

Precondiciones: 1. El dispositivo bluetooth del celular debe estar activo. 2. El dispositivo GPS debe estar activo. 3. El URL proporcionado es válido.

Poscondiciones: 1. Se obtiene la cadena GGA con los datos de ubicación.

Escenario de éxito:

1. Conectar al GPS con el URL. 2. Extraer cadena GGA. 3. Interpretar cadena. 4. Guardar datos. 5. Terminar proceso.

Escenario de fracaso 1:

1. Conectar al GPS con el URL. 2. Ocurre un error en la conexión. 3. Indicar que no se obtuvieron los datos. 4. Terminar proceso.

Escenario de fracaso 2:

1. Conectar al GPS con el URL. 2. Extraer cadena GGA. 3. El dispositivo seleccionado no es un GPS o no se pudo extraer

la cadena. 4. Indicar que no se obtuvieron los datos. 5. Terminar proceso.

Incluye:

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

Page 57: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

45

act CU-1.3 Conectar GPS

Conectar con el dispositiv o utilizando URL

Conexiónestablecida

Inidicar que no se obtuv ieron los datos

Extraer cadena GGA

Extrajo

Interpretar cadena

Guardar datos de ubicación

no

si

no

si

Figura 3.7 Diagrama de actividad del caso de uso CU-1.3 Conectar GPS

En la Figura 3.8 se muestra el diagrama de caso de uso Elaborar Trama. Este caso de uso está contemplado en el paquete mx.edu.cenidet.apisms.trama.

Figura 3.8 Diagrama del caso de uso Elaborar trama

uc CU-2 Elaborar trama

Aplicación LBS

CU-2 Elaborar Trama

Page 58: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

46

Tabla 3.5 Descripción del caso de uso C-2 Elaborar trama

ID: CU-3.4 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.9.

Nombre del caso de uso: Elaborar trama.

Actores: Aplicación LBS

Descripción: Permite elaborar la trama que contiene los datos que se enviarán al servidor, esto a partir de los elementos de un contenedor que indica el tipo de trama que se desea.

Precondiciones: 1. Se debe tener definido el tipo de trama que se desea. Poscondiciones: 1. Se obtendrá la trama a enviar al servidor

Escenario de éxito:

1. Crear mensaje indicando el tipo. 2. Crear dato. 3. Agregar dato al mensaje. 4. Agregar información extra al mensaje. 5. Crear trama a partir de los datos contenidos en el mensaje. 6. Terminar proceso.

Escenario de fracaso 1:

1. Crear mensaje indicando el tipo. 2. Tipo no válido. 3. Lanzar excepción. 4. Terminar proceso.

Escenario de fracaso 2:

1. Crear mensaje indicando el tipo. 2. Crear dato. 3. Agregar dato al mensaje. 4. Dato y tipo de mensaje no compatibles. 5. Lanzar excepción. 6. Terminar proceso.

Incluye:

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

Page 59: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

47

act CU-2 Elaborar trama

Crear mensaje indicando el tipo

Agregar dato

Crear dato

Tipoválido

Dato y tipocompatibles

Crear trama a partir de datos

Existenotrosdatos

Lanzar excepción

si

no

no

si

no

si

Figura 3.9 Diagrama de actividad del caso de uso C-2 Elaborar trama

En la Figura 3.10 se muestra el diagrama de caso de uso Enviar trama. Este caso de uso está contemplado en el paquete mx.edu.cenidet.apisms.conexionsms.

Page 60: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

48

uc CU-3 Env iar mensaje

Aplicación LBS

CU-3 Env iar trama

Figura 3.10 Diagrama del caso de uso Enviar trama

Tabla 3.6 Descripción del caso de uso CU-3 Enviar trama

ID: CU-3 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.11.

Nombre del caso de uso: Enviar trama.

Actores: Aplicación LBS. Descripción: Establece conexión con el destino para enviar un SMS.

Precondiciones: 1. El dispositivo móvil tiene la capacidad de enviar SMS. 2. La conexión para envío de SMS del dispositivo móvil está

activa. Poscondiciones: 1. Se enviará un SMS a un destino válido.

Escenario de éxito:

1. Se establece conexión con el destino. 2. Se envía el SMS. 3. Terminar proceso.

Escenario de fracaso 1:

1. Se establece conexión con el destino. 2. Ocurre un error en la conexión. 3. Lanzar excepción. 4. Terminar proceso.

Escenario de fracaso 2:

1. Se establece conexión con el destino. 2. Se envía el SMS. 3. Ocurre un error en el envío. 4. Lanzar excepción. 5. Terminar proceso.

Incluye:

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

Page 61: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

49

act CU-3 Env iar trama

Establecer conexión con el destino

Conexiónestablecida

Env iar mensaje

Mensajeenviado

Lanzar excepción no

si

si

no

Figura 3.11 Diagrama de actividad del caso de uso CU-3 Enviar trama

En la Figura 3.12 se muestra el diagrama de caso de uso Recibir Respuesta. Este caso de uso está contemplado en el paquete mx.edu.cenidet.apisms.conexionsms.

uc CU-4 Recibir Respuesta

Aplicación LBS

CU-4 Recibir respuesta

CU-4.1 Registrar aplicación

Push Registry

«include»

Figura 3.12 Diagrama del caso de uso Recibir respuesta

Page 62: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

50

Este caso de uso contempla el registro de la aplicación en el Push Registry1. El Application Management Software (AMS) del teléfono, escucha permanentemente todas las conexiones entrantes. Cuando llega una nueva, verifica en la lista del Push Registry si existe un MIDlet relacionado con dicha conexión e identificador y de ser así inicia el MIDlet.

Tabla 3.7 Descripción del caso de CU-4 Recibir respuesta

ID: CU-4 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.13

Nombre del caso de uso: Recibir respuesta.

Actores: Aplicación LBS. Descripción: Permite recibir un SMS.

Precondiciones: 1. El dispositivo móvil tiene la capacidad de recibir SMS. 2. La conexión para recepción de SMS del dispositivo móvil está

activa.

Poscondiciones: 1. Se podrá recibir un SMS antes que llegue a la bandeja de entrada del dispositivo móvil.

Escenario de éxito:

1. Habilitar la aplicación para recibir mensajes SMS. 2. Abrir conexión para recepción de SMS. 3. Recibir mensaje. 4. Leer mensaje recibido. 5. Terminar proceso.

Escenario de fracaso 1:

1. Habilitar la aplicación para recibir mensajes SMS. 2. Abrir conexión para recepción de SMS. 3. Ocurre un error en la conexión 4. Lanzar una excepción. 5. Terminar proceso.

Escenario de fracaso 2:

1. Habilitar la aplicación para recibir mensajes SMS. 2. Abrir conexión para recepción de SMS. 3. Recibir mensaje. 4. Ocurre un error al recibir el mensaje. 5. Lanzar una excepción. 6. Terminar proceso.

Incluye: CU-4.1 Registrar aplicación.

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

1 El Push Registry es una lista que relaciona las conexiones entrantes del teléfono, un identificador (puerto) y un MIDlet.

Page 63: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

51

act CU-4 recibir trama

Abrir conexión

Conexiónestablecida

Recibir mensaje

Mensajerecibido

correctamenteLanzar excepción

Habilitar para recibir notificación alllegar mensaje nuev o

Leer mensaje recibido

no

si

no

si

Figura 3.13 Diagrama de actividad del caso de uso CU-4 Recibir respuesta

Tabla 3.8 Descripción del caso de uso CU-4.1.1 Registrar aplicación

ID: CU- 4.1 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.14.

Nombre del caso de uso: Registrar aplicación.

Actores: Recibir respuesta. Precondiciones: 1. El dispositivo móvil permite escribir en su Push Registry.

Poscondiciones: 1. La aplicación estará habilitada para recibir notificaciones al recibir SMS.

Escenario de éxito:

1. Registrar la aplicación en el Push Registry. 2. Terminar proceso.

Escenario de fracaso:

1. Registrar la aplicación en el Push Registry. 2. Ocurre un error en el registro. 3. Lanzar Excepción. 4. Terminar proceso.

Incluye:

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

Page 64: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

52

act CU-4.1 Registrar en el push registry

Registrar aplicación en el PushRegistry

Resgistrocorrecto

Lanzar excepciónno

si

Figura 3.14 Diagrama de actividad del caso de uso CU-4.1.1 Registrar aplicación

En la Figura 3.15 se muestra el diagrama de caso de uso Interpretar trama. Este caso de uso está contemplado en el paquete mx.edu.cenidet.apisms.trama.

uc recibir trama

Aplicacion LBS

CU-5 Interpretar trama

Figura 3.15 Diagrama de caso de uso Interpretar trama

Tabla 3.9 Descripción del caso de uso CU-5 Interpretar trama

ID: CU- 5 El diagrama de actividades que incluye el escenario de éxito y los escenarios de fracaso se muestra en la Figura 3.16.

Nombre del caso de uso: Interpretar trama.

Actores: Aplicación LBS

Descripción: Permite interpretar una trama que contiene información de consulta o respuesta.

Precondiciones: 1. La trama a interpretar debe haber sido elaborada de la forma descrita en el CU-2.

Poscondiciones: 1. Se obtendrán los datos contenidos en el mensaje mediante la interpretación de la trama.

Page 65: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

53

Escenario de éxito:

1. Leer trama. 2. Obtener datos. 3. Obtener datos extras. 4. Terminar proceso.

Escenario de fracaso 1:

1. Leer trama. 2. Trama no válida. 3. Lanzar excepción. 4. Terminar proceso.

Incluye:

Suposiciones: Se supone que la aplicación LBS importa la librería donde se encuentra la API.

act CU-5 Interpretar trama

Leer trama

Crear dato a partir de la trama

tramaválida

Existendatos extras

Guardar datos extras

Existe másinformaciónLanzar excepción

si

no

no

si

si

no

Figura 3.16 Diagrama de actividad del caso de uso CU-5 Interpretar trama

Page 66: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

54

3.2 Diseño

La API consta de cuatro paquetes • mx.edu.cenidet.apisms.conexiongps para la conexión con el GPS. • mx.edu.cenidet.apisms.conexionsms para la conexión SMS. • mx.edu.cenidet.apisms.dato para representar los datos. • mx.edu.cenidet.apisms.trama para representar el mensaje.

El nombre de los paquetes se asignó siguiendo las recomendaciones descritas en el artículo Estructura de paquetes [sg0205] Todos los paquetes (excepto mx.edu.cenidet.apisms.dato) cuentan con una clase que hereda de java.lang.Exception que representan las excepciones lanzadas por los métodos de las clases de la API. En esta fase de diseño de la API se leyeron documentos relacionados con la programación en J2ME entre los que destacan:

• MIDP 2.0 [midp] • WMA 2.0 [wma2] • JSR82 [jsr82] • Using Threads in J2ME Applications [th03]

Este último se utilizó para la programación con hilos (hilo, thread, flujo de control del programa), ya que las conexiones GPS y SMS deben utilizar un hilo distinto a la aplicación principal para evitar que ésta se bloquee.

En la Figura 3.17 se muestra el diagrama general de clases de la API. En la Figura 3.18 se muestra el diagrama de clases del paquete mx.edu.cenidet.apisms.conexiongps, que es el paquete encargado de gestionar la conexión con el dispositivo bluetooth externo. Este paquete utiliza la API descrita en el JSR82.

Page 67: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

55

class mx.edu.cenidet.apisms

dato::Camino

+ Camino(int)+ LeePuntoGeo(int) : PoiGeoreferenciado+ LeePuntoNoGeo(int) : PoiNoGeoreferenciado+ LeeTipoCamino() : int+ QueryCamino(PoiGeoreferenciado, PoiGeoreferenciado) : void+ QueryCamino(PoiGeoreferenciado, PoiNoGeoreferenciado) : void+ QueryCamino(PoiNoGeoreferenciado, PoiGeoreferenciado) : void+ QueryCamino(PoiNoGeoreferenciado, PoiNoGeoreferenciado) : void

dato::Ev ento

+ EscribeFecha(String) : void+ EscribeHora(String) : void+ EscribeLugar(PoiNoGeoreferenciado) : void+ EscribeLugar(PoiGeoreferenciado) : void+ EscribeNombre(String) : void+ EscribeTipo(String) : void+ EsGeo() : boolean+ EsNoGeo() : boolean+ Evento()+ LeeFecha() : String+ LeeHora() : String+ LeeLugarGeo() : PoiGeoreferenciado+ LeeLugarNoGeo() : PoiNoGeoreferenciado+ LeeNombre() : String+ LeeTipo() : String

dato::Poi

+ EscibeClasif(String) : void+ EscibeNombre(String) : void+ EscribeDistancia(String) : void+ EscribeOtro(String) : void+ LeeClasif() : String+ LeeDistancia() : String+ LeeNombre() : String+ LeeOtro() : String+ Poi()

dato::PoiGeoreferenciado

+ EscribeLatitudG(String) : void+ EscribeLongitudG(String) : void+ LeeLatitudG() : String+ LeeLongitudG() : String+ PoiGeoreferenciado()

dato::PoiNoGeoreferenciado

+ EscribeCalle(String) : void+ EscribeColonia(String) : void+ EscribeCP(String) : void+ EscribeEstado(String) : void+ EscribeLocalidad(String) : void+ EscribeMunicipio(String) : void+ EscribeNum(String) : void+ EscribePais(String) : void+ LeeCalle() : String+ LeeColonia() : String+ LeeCP() : String+ LeeDireccion() : String+ LeeEstado() : String+ LeeLocalidad() : String+ LeeMunicipio() : String+ LeeNum() : String+ LeePais() : String+ PoiNoGeoreferenciado()

trama::Mensaje

+ AgregaInfo(PoiNoGeoreferenciado) : void+ AgregaInfo(PoiGeoreferenciado) : void+ AgregaInfo(Evento) : void+ AgregaInfo(Clima) : void+ AgregaInfo(Camino) : void+ EscribeElemExtra(String) : void+ EscribeExtra(Vector) : void+ EscribeNumero(int) : void+ ExisteExtra() : boolean+ LeeClimaSiguiente() : Clima+ LeeEventoSiguiente() : Evento+ LeeExtra() : Vector+ LeeExtraSiguiente() : String+ LeeGeoSiguiente() : PoiGeoreferenciado+ LeeNoGeoSiguiente() : PoiNoGeoreferenciado+ LeeNumero() : int+ LeeQcamino() : Camino+ LeeTipoObjeto() : int+ LeeTipoTrama() : int+ LeeTrama() : String+ Mensaje(int)+ Mensaje()+ RecibeTrama(String) : void+ tamano() : int

trama::Diccionario

# BuscaIndice(String, int) : String# BuscaPalabra(String, String) : int# Diccionario()

Exceptiontrama::MensajeExcepcion

+ MensajeExcepcion(String)

DiscoveryListenerRunnable

conexiongps::ConectorBT

+ BuscarServicios(int) : void+ CancelarBusquedaDipositivos() : void+ CancelarBusquedaURL() : void+ ConectorBT(Dispositivos)+ deviceDiscovered(RemoteDevice, DeviceClass) : void+ IniciaBTooth() : void+ IniciaBusqueda() : void+ inquiryCompleted(int) : void+ run() : void+ servicesDiscovered(int, ServiceRecord[]) : void+ serviceSearchCompleted(int, int) : void

Exceptionconexiongps::

ConectorBTExcepcion

+ ConectorBTExcepcion(String)

conexiongps::Dispositiv os

+ Dispositivos()+ LeeDispositivos() : Vector+ LeeURL() : String+ mostrarEstado(String) : void

conexiongps::NMEA

+ Esvalido() : boolean+ LeeAltitud() : String+ Leegga() : String+ LeeLatitud() : String+ LeeLongitud() : String+ LeeNumSatelites() : int+ LeePresicion() : float+ NMEA()+ NMEA(String, String, String, String, String, String, String)

conexiongps::SentenciaNMEA

+ establecer(NMEA) : void+ obtener() : NMEA+ SentenciaNMEA()

Threadconexiongps::ConectorGPS

+ ConectorGPS(SentenciaNMEA, String)- desfragmenta(char, String) : Vector- ExtraeSentencias() : void+ IniciarConexion() : void- ObtieneDatosGGA(Vector) : void+ run() : void

Exceptionconexionsms::

ConexionSMSExcepcion

+ ConexionSMSExcepcion(String)

MessageListenerconexionsms::Receptor

+ CierraReceptor() : void+ IniciarReceptor() : void+ LeeMensajeRecibido() : String+ LeeTelOrigen() : String+ notifyIncomingMessage(MessageConnection) : void+ Receptor(MIDlet, String)+ SiRecibido() : boolean

conexionsms::Emisor

+ Emisor(String, String)+ Emisor(String)+ EnviaMensaje(String) : void

-nogeoref

-georef

-Qcamino

-event

Figura 3.17 Diagrama general de clases de la API

Page 68: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

56

class mx.edu.cenidet.apisms.conexiongps

DiscoveryListenerRunnable

ConectorBT

+ BuscarServicios(int) : void+ CancelarBusquedaDipositivos() : void+ CancelarBusquedaURL() : void+ ConectorBT(Dispositivos)+ deviceDiscovered(RemoteDevice, DeviceClass) : void+ IniciaBTooth() : void+ IniciaBusqueda() : void+ inquiryCompleted(int) : void+ run() : void+ servicesDiscovered(int, ServiceRecord[]) : void+ serviceSearchCompleted(int, int) : void

Exception

ConectorBTExcepcion

+ ConectorBTExcepcion(String)

Dispositivos

+ Dispositivos()+ LeeDispositivos() : Vector+ LeeURL() : String+ mostrarEstado(String) : void

NMEA

+ Esvalido() : boolean+ LeeAltitud() : String+ Leegga() : String+ LeeLatitud() : String+ LeeLongitud() : String+ LeeNumSatelites() : int+ LeePresicion() : float+ NMEA()+ NMEA(String, String, String, String, String, String, String)

SentenciaNMEA

+ establecer(NMEA) : void+ obtener() : NMEA+ SentenciaNMEA()

Thread

ConectorGPS

+ ConectorGPS(SentenciaNMEA, String)+ IniciarConexion() : void+ run() : void

Figura 3.18 Diagrama de clases del paquete mx.cenidet.apisms.conexiongps

A continuación se describe de manera general las clases que componen el paquete, la descripción detallada de este y los demás paquetes se encuentra en el Anexo A.

• ConectorBT: Esta clase proporciona métodos para la detección de dispositivos Bluetooth y búsqueda de URL del GPS que se utiliza para la extracción de datos en la clase ConectorGPS.

• ConectorGPS: Esta clase representa la conexión con el GPS.

• Dispositivos: Esta clase contiene métodos para leer la lista de dispositivos encontrados, así como el URL del servicio ofrecido por un dispositivo.

• NMEA: Esta clase contiene métodos para leer los datos de ubicación.

• SentenciaNMEA: Representa la sentencia extraída del GPS.

• ConectorBTExcepcion: Esta excepción se lanza si el sistema Bluetooth del dispositivo móvil está desactivado, o si no puede cambiar el modo del bluetooth local para iniciar con el descubrimiento de dispositivos.

Dado que se trata de una API se explica la forma en la que una aplicación debe invocar los métodos de las clases. En la Figura 3.19 se muestra el diagrama

Page 69: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

57

general de clases de la aplicación Consulta Geo Ubicacion, que utiliza la API para realizar una consulta georeferenciada solicitando un sitio de interés. En la Figura 3.20 se muestra el proceso para obtener la lista de dispositivos cercanos.

class query

Runnable

DatosGPS

+ DatosGPS(MIDlet, int)+ run() : void

MIDletCommandListener

ItemCommandListener

QGeoUbicacion

+ display: Display+ lista: List+ menu: List+ nombre_dispositivos: Vector

+ commandAction(Command, Displayable) : void+ commandAction(Command, Item) : void+ destroyApp(boolean) : void+ ImprimeDispositivos(Vector) : void+ ImprimeURL(String) : void+ pauseApp() : void+ QGeoUbicacion()+ startApp() : void

Runnable

EnviarSMS

+ EnviarSMS(MIDlet, String, int, PoiGeoreferenciado)+ run() : void

Runnable

ListaDispositivos

+ conector: ConectorBT+ dispositivos: Dispositivos

+ ListaDispositivos(MIDlet)+ run() : void

-principal

~Menu-principal

Figura 3.19 Diagrama general de clases de la aplicación Consulta Geo Ubicacion

El proceso lo inicia la aplicación LBS que en este caso, cuenta con una clase llamada BuscarDispositivo que implementa el método run() de la interfaz java.lang.Runnable desde el cual se invocan los métodos de las clases de este paquete. La llamada al método run() de la clase BuscarDispositivos es asíncrona2, esto con el fin de no bloquear la aplicación principal. Se recomienda que las llamadas a los métodos de las clases de este paquete se realicen desde otro hilo. Se crea una instancia de la clase Dispositivos, después se crea un objeto conector de tipo ConectorBT, pasándole como parámetro el objeto instanciado de la clase Dispositivos, se invoca al método IniciaBTooth() de la clase ConectorBT para habilitar al dispositivo móvil en la búsqueda de dispositivos bluetooth remotos, después se inicia la búsqueda de dispositivos con el método IniciaBusqueda(), una vez terminada la búsqueda el objeto conector escribe en el objeto dispositivos la 2 La llamada asíncrona permite al objeto que la realiza, hacer otras llamadas sin necesidad de esperar la respuesta. Es decir el objeto no se bloquea en espera de la respuesta.

Page 70: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

58

lista de nombres de dispositivos encontrados. La cual podrá ser leída desde la clase BuscarDispositivos utilizando el método LeeDispositivos() de la clase Dispositivos, por último se invoca el método ImprimirDispositivos() de la aplicación principal para mostrar en pantalla la lista de nombres de dispositivos seleccionados.

sd conectorBT

Aplicación ConsultaGeo Ubicacion

ConectorBTDispositivosBuscarDispositivos:run()

BuscarDispositiv os

dispositiv os=new Dispositiv os()

dispositiv os

conector=new ConectorBT(dispositiv os)

conector

conector.IniciaBTooth()

conector.IniciaBusqueda()

dipositiv os.Escribedispositiv os(nombre_dispositiv os)

dispositiv os.LeeDispositivos()

nombre_dispositiv os

imprimir(nombre_dispositiv os)

Figura 3.20 Diagrama de secuencias para detectar dispositivos Bluetooth cercanos

Una vez obtenida la lista se debe seleccionar un dispositivo para realizar la conexión y extraer los datos. El proceso se describe en el diagrama de secuencia de la Figura 3.21 que es una sucesión del diagrama de la Figura 3.20. Desde la aplicación principal se selecciona el dispositivo y se envía a la clase DatosGPS de la aplicación principal como parámetro del método SeleccionaDispositivo() y utilizando una llamada asíncrona. La clase DatosGPS invoca al método BuscarServicio() del objeto conector, enviándole como parámetro el índice de dispositivo seleccionado.

Page 71: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

59

sd conectorGPS

Aplicación ConsultaGeo Ubicacion

NMEAConectorBTDispositivosDatosGPS ConectorGPSSentenciaNMEA

SeleccionarDispositivo(indice)

conector.BuscaServ icio(indice)

dispositiv os.EscribeURL(url)

dispositiv os.LeeURL()

url

sentenciaNMEA= newSentenciaNMEA()

senteciaNMEA

conectorGPS=newConectorGPS(sentenciaNMEA,url)

conectorGPS

conectorGPS.IniciarConexion()nmea=new NMEA(latitud,longitud, altitud, satelites,pres, validez, cadenagga)

nmea

sentenciaNMEA.establecer(nmea)

sentenciaNMEA.obtener()

nmea

imprimirDatos(nmea)

v alido=nmea.EsValido()

valido

si(v alido)

nmea.LeeLatitud()

latitud

nmea.LeeLongitud()

longitud

Figura 3.21 Diagrama de secuencias para conectar y obtener datos de un dispositivo GPS

Page 72: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

60

El objeto conector escribe en el objeto dispositivos el URL del dispositivo seleccionado, la clase DatosGPS recibe la notificación que el URL del dispositivo seleccionado ya está disponible y lo obtiene con el método LeeURL() del objeto dispositivo. Se crea entonces un objeto sentenciaNMEA de tipo SentenciaNMEA y después un objeto conectorGPS de tipo ConectorGPS pasándole como parámetro el objeto sentenciaNMEA. La clase DatosGPS inicia la conexión con el método IniciarConexion(). conectorGPS realiza la conexión y extrae los datos del GPS y los guarda en una instancia de la clase NMEA la cual pasa como parámetro al llamar al método establece() del objeto sentenciaNMEA. La clase DatosGPS recibe la notificación de que los datos ya están disponibles y los lee utilizando el método obtener() del objeto sentenciaNMEA. Por último se invoca al método ImprimirDatos() de la aplicación principal, para mostrar los datos en pantalla. En la Figura 3.22 se muestra el diagrama de clases del paquete mx.edu.cenidet.apisms.conexionsms, cuenta con dos clases que se encargan de enviar y recibir el SMS.

• Emisor: Representa la conexión con el dispositivo remoto al que se le envía la información.

• Receptor: Representa la conexión con el dispositivo remoto del que se está recibiendo la información.

• ConexionSMSExcepcion: Se lanza la excepción si ocurre un error al momento de iniciar la conexión, enviar o recibir el mensaje, o al cerrar la conexión.

Este paquete utiliza la API WMA 2.0 de J2ME

class mx.edu.cenidet.apisms.conexionsms

ExceptionConexionSMSExcepcion

+ ConexionSMSExcepcion(String)

MessageListenerReceptor

+ CierraReceptor() : void+ IniciarReceptor() : void+ LeeMensajeRecibido() : String+ LeeTelOrigen() : String+ notifyIncomingMessage(MessageConnection) : void+ Receptor(MIDlet, String)+ SiRecibido() : boolean

Emisor

+ Emisor(String, String)+ Emisor(String)+ EnviaMensaje(String) : void

Figura 3.22 Diagrama de clases del paquete mx.edu.cenidet.apisms.conexionsms

Page 73: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

61

En la Figura 3.23 se muestra el diagrama de secuencia para el envío de un SMS.

sd Env iar mensaje

Aplicación Consulta GeoUiación

EmisorEnviarSMS:run()

EnviarMensaje();

emisor=new Emisor(telefono,puerto)

emisor

emisor.EnviaMensaje()

ImprimeMensaje("Mensaje Enviado")

Figura 3.23 Diagrama de secuencia para enviar un mensaje

Ya que se trata de una conexión se recomienda hacer las llamadas a los métodos desde otro hilo. En este caso la aplicación principal cuenta con una clase llamada EnviaSMS que implementa el método run() de la interfaz java.lang.Runnable. Se crea un objeto emisor pasándole como parámetros el número telefónico destino y el puerto y se envía el mensaje utilizando el método EnviaMensaje() de la clase Emisor. Para la recepción de mensajes se creo la aplicación Recibe Trama, ala cual sólo contiene una clase llamada RecibeTrama que es la que invoca los métodos de la API necesarios para la recepción de SMS. En la Figura 3.24 se muestra el proceso para la recepción de mensajes SMS. Para que una aplicación pueda recibir SMS debe registrarse en el Push Registry del teléfono. De la misma forma que con el envío de mensajes, se recomienda que la recepción se realice desde otro hilo. El proceso inicia al crear un objeto de la clase Receptor pasándole como parámetro el MIDlet de la aplicación principal y el puerto con el que se desea asociar el MIDlet. Se utiliza el método SiRecibido() de la clase Receptor como condición de un ciclo, el ciclo termina hasta que se reciba un mensaje, el cual se

Page 74: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

62

lee utilizando el método LeeMensajeRecibido(), una vez recibido se invoca el método imprimir() de la aplicación principal para mostrar el mensaje en pantalla.

sd Recibir Mensaje

Aplicación RecibeTrama

RecibeTrama:run() Receptor

PushRegistry

CrearReceptor()

receptor=newReceptor(AplicacionLBS,puerto)

Escribe(AplicacionLBS,puerto)

receptor

receptor.Sirecibido*[recibido=true]

recibido

receptor.LeeMensajeRecibido()

mesajeRecibido

Imprimir(mensajeRecibido)

Figura 3.24 Diagrama de secuencia para recibir un mensaje

En la Figura 3.25 se muestra el diagrama de clases del paquete mx.cenidet.edu.apisms.dato que cuenta con clases que representan los datos que puede contener un mensaje.

• Camino: Esta clase representa una consulta de camino, contiene el punto inicial y final.

• Clima: Representa la respuesta a una consulta de clima.

• Evento: Representa un evento.

• Poi: Representa un punto de interés.

• PoiGeoreferenciado: Representa un punto de interés georeferenciado.

• PoiNoGeoreferenciado: Representa un punto de interés no georeferenciado.

Page 75: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

63

class mx.edu.cenidet.apisms.dato

Camino

+ INI_GEO__FIN_GEO: int = 0 {readOnly}+ INI_GEO__FIN_NOGEO: int = 1 {readOnly}+ INI_NOGEO__FIN_GEO: int = 2 {readOnly}+ INI_NOGEO__FIN_NOGEO: int = 3 {readOnly}

+ Camino(int)+ LeePuntoGeo(int) : PoiGeoreferenciado+ LeePuntoNoGeo(int) : PoiNoGeoreferenciado+ LeeTipoCamino() : int+ QueryCamino(PoiGeoreferenciado, PoiGeoreferenciado) : void+ QueryCamino(PoiGeoreferenciado, PoiNoGeoreferenciado) : void+ QueryCamino(PoiNoGeoreferenciado, PoiGeoreferenciado) : void+ QueryCamino(PoiNoGeoreferenciado, PoiNoGeoreferenciado) : void

Evento

+ EscribeFecha(String) : void+ EscribeHora(String) : void+ EscribeLugar(PoiNoGeoreferenciado) : void+ EscribeLugar(PoiGeoreferenciado) : void+ EscribeNombre(String) : void+ EscribeTipo(String) : void+ EsGeo() : boolean+ EsNoGeo() : boolean+ Evento()+ LeeFecha() : String+ LeeHora() : String+ LeeLugarGeo() : PoiGeoreferenciado+ LeeLugarNoGeo() : PoiNoGeoreferenciado+ LeeNombre() : String+ LeeTipo() : String

Poi

+ EscibeClasif(String) : void+ EscibeNombre(String) : void+ EscribeDistancia(String) : void+ EscribeOtro(String) : void+ LeeClasif() : String+ LeeDistancia() : String+ LeeNombre() : String+ LeeOtro() : String+ Poi()

PoiGeoreferenciado

- latitud: String- longitud: String

+ EscribeLatitudG(String) : void+ EscribeLongitudG(String) : void+ LeeLatitudG() : String+ LeeLongitudG() : String+ PoiGeoreferenciado()

PoiNoGeoreferenciado

+ EscribeCalle(String) : void+ EscribeColonia(String) : void+ EscribeCP(String) : void+ EscribeEstado(String) : void+ EscribeLocalidad(String) : void+ EscribeMunicipio(String) : void+ EscribeNum(String) : void+ EscribePais(String) : void+ LeeCalle() : String+ LeeColonia() : String+ LeeCP() : String+ LeeDireccion() : String+ LeeEstado() : String+ LeeLocalidad() : String+ LeeMunicipio() : String+ LeeNum() : String+ LeePais() : String+ PoiNoGeoreferenciado()

Figura 3.25 Diagrama de clases del paquete mx.cenidet.edu.apisms.dato

En la Figura 3.26 se muestra el diagrama de clases correspondiente al paquete mx.edu.cenidet.apisms.trama que representa el contenedor de los datos a enviar. Cuenta con tres clases: Mensaje, Diccionario y Cadena, de las cuales sólo Mensaje es accesible; Diccionario y Cadena son de uso exclusivo.

• Mensaje: Representa el mensaje a enviar.

• Cadena: Contiene un método para la interpretación de la trama.

• Diccionario: Contiene la clave de las palabras que se utilizan para la elaboración e interpretación de las tramas.

Page 76: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

64

class mx.edu.cenidet.apisms.trama

Cadena

# Cadena()# desfragmenta(char, String) : Vector

Mensaje

+ Q_CAMINO_GEO_GEO: int = 1 {readOnly}+ Q_CAMINO_GEO_NOGEO: int = 2 {readOnly}+ Q_CAMINO_NOGEO_GEO: int = 6 {readOnly}+ Q_CAMINO_NOGEO_NOGEO: int = 7 {readOnly}+ Q_GEO_CLIMA: int = 4 {readOnly}+ Q_GEO_EVENTO: int = 3 {readOnly}+ Q_GEO_UBICACION: int = 0 {readOnly}+ Q_NOGEO_CLIMA: int = 9 {readOnly}+ Q_NOGEO_EVENTO: int = 8 {readOnly}+ Q_NOGEO_UBICACION: int = 5 {readOnly}+ R_CLIMA: int = 13 {readOnly}+ R_GEO_CAMINO: int = 11 {readOnly}+ R_GEO_EVENTO: int = 12 {readOnly}+ R_GEO_UBICACION: int = 10 {readOnly}+ R_NOGEO_EVENTO: int = 15 {readOnly}+ R_NOGEO_UBICACION: int = 14 {readOnly}

+ AgregaInfo(PoiNoGeoreferenciado) : void+ AgregaInfo(PoiGeoreferenciado) : void+ AgregaInfo(Evento) : void+ AgregaInfo(Clima) : void+ AgregaInfo(Camino) : void+ EscribeElemExtra(String) : void+ EscribeExtra(Vector) : void+ EscribeNumero(int) : void+ ExisteExtra() : boolean+ LeeClimaSiguiente() : Clima+ LeeEventoSiguiente() : Evento+ LeeExtra() : Vector+ LeeExtraSiguiente() : String+ LeeGeoSiguiente() : PoiGeoreferenciado+ LeeNoGeoSiguiente() : PoiNoGeoreferenciado+ LeeNumero() : int+ LeeQcamino() : Camino+ LeeTipoObjeto() : int+ LeeTipoTrama() : int+ LeeTrama() : String+ Mensaje(int)+ Mensaje()+ RecibeTrama(String) : void+ tamano() : int

ExceptionMensajeExcepcion

+ MensajeExcepcion(String)

Diccionario

- clasificacion: Vector- distancia: Vector- pos: int- tipoEvento: Vector

# BuscaIndice(String, int) : String# BuscaPalabra(String, String) : int# Diccionario()

Figura 3.26 Diagrama de clases del paquete mx.cenidet.edu.apisms.trama

Los paquetes mx.edu.cenidet.apisms.trama y mx.edu.cenidet.apisms.dato, están estrechamente ligados como se muestra en el diagrama general de clases de la Figura 3.2, al crear un mensaje se debe crear también el tipo de dato que contendrá el mensaje. En la Figura 3.27 se muestra el proceso para crear un mensaje que contendrá un dato de tipo Evento el cual a su vez requiere la creación de un dato tipo PoiGeoreferenciado ya que el mensaje representa una consulta georeferenciada de evento.

Page 77: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

65

sd Elaborar Mensaje de tipo Ev ento

AplicaciónLBS

PoiGeoreferenciado MensajeEvento

poigeo= new PoigeoReferenciado()

poigeo

poigeo.EscribeLatitud(latitud)

poigeo.EscribeLongitud(longitud)

poigeo.EscribeDistancia()

ev ento=new Ev ento()

ev ento

ev ento.EscribeTipo(tipo)

evento.EscribeFecha(fecha)

evento.EscribeLugar(poigeo)

mensaje= new Mensaje(Mensaje.Q_GEO_EVENTO)

mensaje

mensaje.EscribeNumero(num)

mensaje.AgregaInfo(ev ento)

mensaje.LeeTrama()

trama

Figura 3.27 Diagrama de secuencia para la elaboración de un mensaje de tipo Evento

Page 78: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

66

El proceso se inicia con la creación de un objeto tipo PoiGeoreferenciado que representa la ubicación georeferenciada (latitud, longitud) del dispositivo móvil, utilizando los métodos EscribeLongitud() y EscribeLatitud() se asignan los datos de ubicación, el radio de búsqueda se asigna con el método EscribeDistancia(). Después se crea un objeto de tipo Evento, se indica el tipo de evento que busca utilizando el método EscribeTipo(), la fecha con el método EscribeFecha() y la ubicación con EscribeLugar() pasándole como parámetro el objeto poiGeoreferenciado creado anteriormente. Se instancia a la clase Mensaje pasándole como parámetro el tipo de mensaje, en este caso Q_GEO_EVENTO, se indica el número de respuestas deseada con el método EscribeNumero(), se agrega al mensaje el objeto evento, con el método AgregarInfo() y por último se obtiene la trama del mensaje utilizando el método LeerTrama().

3.3 Diseño de tramas

Se diseñaron 16 tramas para el envío de datos de consulta y respuesta, en la Figura 3.28 se muestra la trama general del mensaje.

Cabecera Datos Datos Extra

Figura 3.28 Trama Mensaje

En la Figura 3.29 se muestran los campos contenidos en la Cabecera de la trama.

Tipo Número de respuestas Indicador de datos extra

Figura 3.29 Detalle de cabecera

Los posibles valores del campo Tipo y su descripción se encuentran en la Tabla 3.10. En la Figura 3.30 se muestra el detalle del campo Datos Extra de la trama general del mensaje, consiste en uno o mas datos extra que contienen texto.

Datos Extra Datos Extra …

Figura 3.30 Dato extras

Page 79: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

67

Tabla 3.10 Valores del campo Tipo de la cabecera de la trama Valor Tipo Descripción

0 Q_GEO_UBICACION Consulta de sitios de interés cercanos, la ubicación del dispositivo móvil es un punto georeferenciado.

1 Q_CAMINO_GEO_GEO Consulta de un camino donde el inicio y el fin es un punto georeferenciado.

2 Q_CAMINO_GEO_NOGEO Consulta de un camino donde el inicio es un punto georeferenciado y el fin es un punto no georeferenciado.

3 Q_GEO_EVENTO Consulta de Eventos cercanos, la ubicación del dispositivo móvil es un punto georeferenciado.

4 Q_GEO_CLIMA Consulta del clima, la ubicación del dispositivo móvil es un punto georeferenciado.

5 Q_NOGEO_UBICACION Consulta de sitios de interés cercanos, la ubicación del dispositivo móvil es un punto no georeferenciado.

6 Q_CAMINO_NOGEO_GEO Consulta de un camino donde el inicio es un punto no georeferenciado y el fin es un punto georeferenciado.

7 Q_CAMINO_NOGEO_NOGEO Consulta de un camino donde el inicio y el fin es un punto no georeferenciado.

8 Q_NOGEO_EVENTO Consulta de Eventos cercanos, la ubicación del dispositivo móvil es un punto no georeferenciado.

9 Q_NOGEO_CLIMA Consulta del clima, la ubicación del dispositivo móvil es un punto no georeferenciado que indica la ciudad, el estado y el país.

A R_GEO_UBICACION Respuesta con sitios de interés cuya ubicación es punto georeferenciado.

B R_GEO_CAMINO Respuesta de un camino. Es una sucesión de puntos georeferenciados.

C R_GEO_EVENTO Respuesta de Eventos cercanos, la ubicación es un punto georeferenciado

d R_CLIMA Respuesta de clima.

E R_NOGEO_UBICACION Respuesta con sitios de interés cuya ubicación es punto no georeferenciado.

F R_NOGEO_EVENTO Respuesta de Eventos cercanos, la ubicación es un punto no georeferenciado.

Page 80: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

68

En la Figura 3.31 se muestra el detalle del campo Datos, que consiste en uno o más datos disponibles; PoiGeo, PoiNoGeo, Evento, Clima, Consulta Camino.

Dato Dato … Figura 3.31 Detalle de dato

En la Figura 3.32 se muestra los campos contenidos en un campo Dato de tipo PoiGeo.

Latitud Longitud Figura 3.32 Trama PoiGeo

En la Figura 3.33 se muestran los campos contenidos en el campo Datos de una consulta georeferenciada de ubicación.

Palabra Distancia PoiGeo Figura 3.33 Campo dato de trama Q_GEO_UBICACION

Los posibles valores de los campos Palabra y Distancia se muestran en las tablas Tabla 3.11 y Tabla 3.12 respectivamente.

Tabla 3.11 Valores del Campo Palabra Valor Tipo

0 EVENTO 1 CLIMA 2 CAMINO 3 HOTEL 4 BANCO 5 BUS 6 CINE 7 HOSPITAL 8 RESTAURANTE9 SMERCADO 10 TAXI 11 PASTELERIA 12 MSUPER 13 GYM 14 ESCUELA 15 VIDEO 16 FARMACIA 17 TODOS 18 SIN DEFINIR

Tabla 3.12 Valores del campo Distancia Valor Distancia en Metros

1 50 2 100 3 150 4 200 5 250 6 300 7 350 8 400 9 450 10 500 11 1000 12 1500 13 2000 14 2500 15 3000 16 SIN DEFINIR

Page 81: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

69

En la Figura 3.34 se muestran los campos contenidos en el campo Datos de una consulta de camino, cuyo inicio y fin están representados por un punto georeferenciado.

2 PoiGeo Inicial

PoiGeo Final

Figura 3.34 Campo dato de trama Q_CAMINO_GEO_GEO

En la Figura 3.35 se muestran los campos que representan un punto no georeferenciado. Algunos campos pueden quedar vacíos.

Calle Núm Colonia CP Localidad Municipio Edo País

Figura 3.35 PoiNoGeo En la Figura 3.36 se muestran los campos contenidos en el campo Datos de una consulta de camino cuyo inicio está representado por un punto georeferenciado y fin por un punto no georeferenciado.

2 Poigeo Inicial

PoiNogeo final

Figura 3.36 Campo dato de trama Q_CAMINO_GEO_NOGEO En la Figura 3.37 se muestran los campos contenidos en el campo Datos de una consulta georeferenciada de evento.

Figura 3.37 Campo dato de trama Q_GEO_EVENTO En la Tabla 3.13 se listan los posibles valores del campo Tipo Evento.

Tabla 3.13 Valores del campo Tipo de Evento Valor Tipo 0 POLÍTICO 1 SOCIAL 2 CULTURAL 3 RELIGIOSO 4 MUSICAL 5 OTRO 6 SIN DEFINIR 7 TODOS

0 Distancia Tipo de Evento Fecha PoiGeo

Page 82: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

70

En la Figura 3.38 se muestran los campos contenidos en el campo Datos de una consulta georeferenciada de clima.

1 PoiGeo Figura 3.38 Campo dato de trama Q_GEO_CLIMA

En la Figura 3.39 se muestran los campos contenidos en el campo Datos de una consulta no georeferenciada de ubicación.

Palabra Distancia PoiNoGeo

Figura 3.39 Campo dato de trama Q_NOGEO_UBICACION En la Figura 3.40 se muestran los campos contenidos en el campo Datos de una consulta de camino cuyo inicio está representado por un punto no georeferenciado y fin por un punto georeferenciado.

2 PoiNoGeo inicial

PoiGeo final

Figura 3.40 Campo dato de trama Q_CAMINO_NOGEO_GEO En la Figura 3.41 se muestran los campos contenidos en el campo Datos de una consulta de camino cuyo inicio y fin están representados por un punto no georeferenciado.

2 PoiNoGeo inicial

PoiNoGeo final

Figura 3.41 Campo dato de trama Q_CAMINO_NOGEO_NOGEO En la Figura 3.42 se muestran los campos contenidos en el campo Datos de una consulta no georeferenciada de clima, al menos uno de los tres últimos campos debe tener un valor.

1 Localidad Estado País Figura 3.42 Campo dato de trama Q_NOGEO_CLIMA

Page 83: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Análisis y Diseño

71

En la Figura 3.43 se muestran los campos contenidos en el campo Datos de una respuesta georeferenciada de ubicación.

Palabra Distancia Nombre PoiGeo Campo adicional

Figura 3.43 Campo dato de trama R_GEO_UBICACION En la Figura 3.44 se muestran los campos contenidos en el campo Datos de una respuesta de camino, consiste en varios puntos georeferenciados.

PoiGeo PoiGeo …

Figura 3.44 Campo dato de trama R_GEO_CAMINO En la Figura 3.45 se muestran los campos contenidos en el campo Datos de una respuesta georeferenciada de evento.

Figura 3.45 Campo dato de trama R_GEO_EVENTO En la Figura 3.46 se muestran los campos contenidos en el campo Datos de una respuesta de clima.

Fecha Temperatura máxima

Temperatura mínima Tiempo

Figura 3.46 Campo dato de trama R_CLIMA En la Figura 3.47 se muestran los campos contenidos en el campo Datos de una respuesta no georeferenciada de ubicación.

Palabra Distancia Nombre PoiNoGeo Campo adicional

Figura 3.47 Campo dato de trama R_NOGEO_UBICACION En la Figura 3.48 se muestran los campos contenidos en el campo Datos de una respuesta no georeferenciada de evento.

Figura 3.48 Campo dato de trama R_NOGEO_EVENTO

Tipo de Evento

Nombre de evento Fecha Hora PoiGeo Campo

adicional

Tipo de Evento

Nombre de evento Fecha Hora PoiNoGeo Campo

adicional

Page 84: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

CAPÍTULO 4 IMPLEMENTACIÓN

Page 85: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

En este capítulo se describe la forma en la que se utiliza la API, para esto se presentan segmentos de código y una explicación de dicho código.

Page 86: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 87: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

75

En este capítulo se muestran segmentos de código que explican el uso de la API, los códigos completos se encuentran en el Anexo B. Y la documentación de la API en el Anexo A. Para el desarrollo de la API y de los programas se utilizó NetBeans [nb5] como entorno de programación. Para probar la API y las aplicaciones en distintos emuladores, se instalaron los sdk que ofrecen Nokia y Sony Ericsson. • Series 80 Platform SDKs for Symbian OS [sdks80] • Sony Ericsson SDK 2.2.4 for the Java ME Platform[sdksony]

Se intentó hacer funcional la API en dispositivos BlackBerry utilizando el BlackBerry Java Development Enviroment [bbjde] como se describe en [j2mebb] pero no fue posible ya que la API descrita en el JSR82 [jsr82] utilizada para la conexión bluetooth, no es compatible con dichos dispositivos.

4.1 Conexión con el GPS.

En la Figura 4.1 se muestra como obtener una lista de nombres de dispositivos bluetooth cercanos al dispositivo móvil.

1 //ListaDispositivos.java 2 import mx.edu.cenidet.apisms.conexiongps.*; 3 … 4 public class ListaDispositivos implements Runnable{ 5 … 6 public static Dispositivos dispositivos; 7 public static ConectorBT conector; 8 private Vector nombre_dispositivos; 9 … } 10 public void run() { 11 dispositivos=new Dispositivos(); 12 conector=new ConectorBT(dispositivos); 13 try{ 14 conector.IniciaBTooth(); 15 } catch (ConectorBTExcepcion ex) { 16 principal.display.setCurrent(principal.menu); 17 principal.MuestraAlarma(“Error al inciar el Bluetooth”); 18 return; 19 } 20 conector.IniciaBusqueda(); 21 nombre_dispositivos=dispositivos.LeeDispositivos(); 22 principal.ImprimeDispositivos(nombre_dispositivos); 23 } 24 25 void CancelarDispositivo() { 26 try{

Page 88: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

76

27 conector.CancelarBusquedaDipositivos(); 28 }catch (ConectorBTExcepcion e){ 29 } 30 } 31 32 void CancelarServicio() { 33 conector.CancelarBusquedaURL(); 34 } 35 }

Figura 4.1 Búsqueda de Dispositivos Bluetooth En la línea 2 se importa el paquete de la API necesario para la conexión con dispositivos bluetooth. En la línea 4 se observa que la clase implementará la interfaz Runnable, esto con el fin de no bloquear la aplicación principal al realizar la conexión. En la línea 6 se declara una variable dispositivos de tipo Dispositivos que es donde se guardará la lista de nombres de dispositivos encontrados. En la línea 7 se declara conector de tipo ConectorBT que será el encargado de gestionar la conexión. En la línea 11 se crea una nueva instancia de Dispositivos y en la 12 una de ConectorBT. En la línea 14 se inicia el dispositivo bluetooth del dispositivo móvil, si sucede un error se muestra en pantalla un mensaje con el error ocurrido. Si se inicia correctamente se procede con la búsqueda como se muestra en la línea 20. En la línea 21 se le asigna al vector nombre_dispositivos la lista de nombres obtenidos. Y en la línea 22 se manda a imprimir en pantalla dicha lista. El método definido de la línea 25 a la 30 muestra como cancelar la búsqueda de dispositivos cercanos. El método descrito de la línea 32 a la35 muestra la forma de cancelar la búsqueda de URL de un dispositivo seleccionado. Una vez obtenida la lista se selecciona un dispositivo y se extraen los datos de GPS, como se muestra en la Figura 4.2

1 // DatosGPS.java 2 import mx.edu.cenidet.apisms.conexiongps.*; 3 … 4 public class DatosGPS implements Runnable{ 5 …} 6 7 public void run() { 8 try { 9 ListaDispositivos.conector.BuscarServicios(indice);

10 } catch(ConectorBTExcepcion ex) { 11 ex.printStackTrace(); 12 } 13 url=ListaDispositivos.dispositivos.LeeURL(); 14 if((url==”NO SE ENCONTRARON SERVICIOS”)||(url==”DISPOSITIVO

Page 89: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

77

INALCANZABLE”)) 15 principal.ImprimeURL(url); 16 else{ 17 NMEA nmea=new NMEA(); 18 SentenciaNMEA sentenciaNMEA=new SentenciaNMEA(); 19 ConectorGPS conectorGPS =new ConectorGPS(sentenciaNMEA,url); 20 conectorGPS.IniciarConexion(); 21 nmea=sentenciaNMEA.obtener(); 22 principal.ImprimeDatosGPS(nmea); 23 } 24 } 25 }

Figura 4.2 Conexión con GPS En la línea 9 se inicia la búsqueda de URL del dispositivo seleccionado. La línea 13 asigna a la variable URL el resultado obtenido. La condición de la línea 14 permite realizar acciones correspondientes dependiendo del resultado, si no se pudo obtener el URL, se muestra un mensaje en pantalla como lo indica la línea 15, si se obtuvo una dirección, se realiza la conexión y extracción de datos como lo muestran las líneas de la 17 a la 21. En la línea 17 se crea un objeto NMEA que contendrá los datos de ubicación obtenidos del GPS. En la línea 18 se crea un objeto SentenciaNMEA que contendrá la sentencia GGA extraída del GPS. En la línea 19 se crea un objeto ConectorGPS indicándole el URL y la sentenciaNMEA. En la línea 20 se inicia la conexión, en la 21 se obtienen los datos y por último en la 22 se mandan a imprimir los datos. El código de la impresión de datos se muestra en la Figura 4.3. En la línea 14 se verifica la validez de los datos obtenidos, utilizando el método EsValido() de la clase NMEA, si los datos son válidos se muestran en pantalla como se indica en las líneas de la 15 a la 21. En caso contrario se imprime el contenido de la cadena GGA que indica que la cadena no se pudo extraer.

1 *//QgeoUbicacion.java 2 … 3 import mx.edu.cenidet.apisms.conexiongps.NMEA; 4 import mx.edu.cenidet.apisms.dato.PoiGeoreferenciado; 5 6 public class QgeoUbicacion extends MIDlet implements CommandListener,

ItemCommandListener{ 7 … 8 private PoiGeoreferenciado poigeo; 9 …

10 void ImprimeDatosGPS(NMEA nmea) { 11 latitud=nmea.LeeLatitud(); 12 longitud=nmea.LeeLongitud(); 13 datos=new List(“Datos GPS”,lista.IMPLICIT); 14 if (nmea.Esvalido()){ 15 datos.append(“Latitud”+nmea.LeeLatitud(),null); 16 datos.append(“Longitud”+nmea.LeeLongitud(),null); 17 datos.append(“Altitud”+nmea.LeeAltitud(),null);

Page 90: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

78

18 datos.append(“Núm de Sat”+nmea.LeeNumSatelites(),null); 19 datos.append(“validez”+nmea.Esvalido(),null); 20 datos.append(“precision”+nmea.LeePresicion(),null); 21 datos.append(“gga”+nmea.Leegga(),null); 22 … 23 } else { 24 datos.append(nmea.Leegga(),null); 25 } 26 … 27 } 28 }

Figura 4.3 Impresión de datos

4.2 Envío de consulta georeferenciada.

En la Figura 4.4 se muestra el código para crear un objeto georeferenciado. En la línea 9 se crea el objeto poigeo de tipo PoiGeoreferenciado, en la línea 10 se asigna la latitud utilizando el método EscribeLatitudG() y en la 11 se asigna la longitud con el método EscribeLongitudG(). En la línea 12 se asigna el tipo de servicio que se está consultando (taxi, escuela, cine, etc.). En la línea 13 se asigna el radio de búsqueda.

1 // QgeoUbicacion.java 2 … 3 import mx.edu.cenidet.apisms.dato.PoiGeoreferenciado; 4 … 5 public void commandAction(Command command, Item item) { 6 if(command==enviar){ 7 int num_resp=Integer.parseInt(cantidad.getString()); 8 String tel=telefono.getString(); 9 poigeo=new PoiGeoreferenciado();

10 poigeo.EscribeLatitudG(latitud); 11 poigeo.EscribeLongitudG(longitud); 12

poigeo.EscibeClasif(palabra.getString(palabra.getSelectedIndex())); 13

poigeo.EscribeDistancia(distancia.getString(distancia.getSelectedIndex()));

14 EnviarSMS enviar=new EnviarSMS(this,tel,num_resp,poigeo); 15 } 16 } 17 …

Figura 4.4 Creación del objeto PoiGeoreferenciado En la línea 14 se crea una nueva instancia de la clase EnviarSMS pasándole como parámetro el MIDlet de la aplicación principal, el número telefónico, el número de respuestas deseada y el objeto poigeo.

Page 91: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

79

En la Figura 4.5 se muestra el código de la clase EnviarSMS. Las líneas 3 a la 7 importan los paquetes necesarios para la creación del mensaje y el envío del mismo. En la línea 18 se crea una instancia de la clase Mensaje indicando el tipo de mensaje que se desea, en este caso es un mensaje de consulta georeferenciada de sitio de interés. En la línea 19 se agrega al mensaje el punto georeferenciado con el método AgregarInfo(). En la línea 21 se asigna el número de respuestas deseada, y en la 22 se asigna a la variable trama la trama resultante. En la línea 29 se crea un objeto emisor para gestionar el envío del mensaje, se le indica el número de teléfono y el puerto. En la línea 30 se envía el contenido de la variable trama. En la línea 35 se imprime un mensaje en pantalla en caso que haya ocurrido un error al enviar el mensaje, y en la 38 se imprime un mensaje indicando que el mensaje se envío con éxito.

1 // EnviarSMS.java 2 3 import mx.edu.cenidet.apisms.conexionsms.ConexionSMSExcepcion; 4 import mx.edu.cenidet.apisms.conexionsms.Emisor; 5 import mx.edu.cenidet.apisms.dato.PoiGeoreferenciado; 6 import mx.edu.cenidet.apisms.trama.Mensaje; 7 import mx.edu.cenidet.apisms.trama.MensajeExcepcion; 8 9 public class EnviarSMS implements Runnable{

10 11 PoiGeoreferenciado poi; 12 Mensaje mensaje; 13 Emisor emisor; 14 … 15 public void run() { 16 String trama=””; 17 boolean enviado=false; 18 mensaje=new Mensaje(Mensaje.Q_GEO_UBICACION); 19 mensaje.AgregaInfo(poi); 20 try { 21 mensaje.EscribeNumero(num); 22 trama=mensaje.LeeTrama(); 23 } catch (MensajeExcepcion ex) { 24 ex.printStackTrace(); 25 Menu.MuestraAlarma(ex.getMessage()); 26 return; 27 } 28 try { 29 emisor= new Emisor(telefono,”50003”); 30 emisor.EnviaMensaje(trama); 31 enviado=�era; 32 System.out.println(“trama:”+trama); 33 } catch(ConexionSMSExcepcion ex) { 34 ex.printStackTrace(); 35 Menu.MuestraAlarma(ex.getMessage()); 36 }

Page 92: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

80

37 if(enviado) 38 Menu.MuestraAlarma(“Trama enviada:\n”+trama+”\n puerto

50003”); 39 40 } 41 42 }

Figura 4.5 Envío de consulta de ubicación georeferenciada

4.3 Recepción de respuesta no georeferenciada.

En la Figura 4.6 se muestra el código para la recepción de mensajes. De las líneas 3 a la 6 se importan los paquetes necesarios para la recepción del mensaje y la interpretación de la trama. Al iniciar la aplicación se crea el objeto receptor con el que gestiona la recepción del SMS. En la línea 9 se instancia la clase Receptor y en la 10 se prepara el dispositivo móvil para la recepción de SMS. Al igual que con el envío se recomienda que la recepción de SMS se realice desde otro hilo. En la línea 21 se verifica la llegada de un nuevo mensaje, en la línea 22 se asigna a la variable trama el texto del mensaje recibido. En la línea 26 se crea el objeto mensaje; a diferencia del envío en la recepción se desconoce el tipo de mensaje a tratar, por lo que al instanciar la clase Mensaje no se indica el tipo. En la línea 28 se asigna la trama recibida al mensaje, es probable que la trama recibida no sea válida por eso se verifica en la línea 34. En la línea 35 se averigua el tipo de trama que se ha recibido, y según el tipo, se trata. En este caso se muestra cómo se trata una trama de tipo respuesta no georeferenciada de puntos de interés. En la línea 40 se lee el número total de respuestas. En la línea 42 se inicia el ciclo que termina cuando no existan más datos dentro del mensaje. En la línea 43 se crea el objeto poinogeo para guardar en él los datos PoiNoGeoreferenciado que contiene el mensaje. En la línea 44 se asigna al objeto poinogeo el siguiente dato que contiene el mensaje. De las líneas 45 a la 50 se utilizan los métodos propios de la clase PoiNoGeoreferenciado para leer los datos.

Page 93: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

81

1 //* RecibeTrama.java 2 … 3 import mx.edu.cenidet.apisms.conexionsms.*; 4 import mx.edu.cenidet.apisms.dato.*; 5 import mx.edu.cenidet.apisms.trama.*; 6 … 7 public void startApp() { 8 try { 9 receptor=new Receptor(this,”50003”);

10 receptor.IniciarReceptor(); 11 } catch(ConexionSMSExcepcion ex) {ex.printStackTrace();} 12 … 13 } 14 … 15 public void destroyApp(boolean unconditional) { 16 receptor.CierraReceptor(); 17 } 18 … 19 public void run() { 20 … 21 if(receptor.SiRecibido()){ 22 trama=receptor.LeeMensajeRecibido(); 23 … 24 PoiNoGeoreferenciado poinogeo; 25 … 26 Mensaje msjrecibido=new Mensaje(); 27 try { 28 msjrecibido.RecibeTrama(trama); 29 siLeyo=true; 30 } catch(MensajeExcepcion ex) { 31 MuestraError(ex.getMessage()); 32 ex.printStackTrace(); 33 } 34 if(siLeyo){ 35 tipo=msjrecibido.LeeTipoTrama(); 36 switch (tipo){ 37 … 38 case 14:{//Respuesta no Geo 39 … 40 texto=”Tot.resp”+toString(msjrecibido.LeeNumero())); 41 … 42 for(i=0; i<msjrecibido.tamano();i++){ 43 poinogeo=new PoiNoGeoreferenciado(); 44 poinogeo=msjrecibido.LeeNoGeoSiguiente(); 45 texto3 =”Nombre:”+poinogeo.LeeNombre()); 46 texto5=”Calle:”+poinogeo.LeeCalle()); 47 texto6=”Numero:”+poinogeo.LeeNum()); 48 texto7=”Colonia”+poinogeo.LeeColonia()); 49 texto8=”CP:”+poinogeo.LeeCP()); 50 texto9=”Localidad:”+poinogeo.LeeLocalidad()); 51 … 52 } 53 …

Figura 4.6 Recepción de respuesta no georeferenciada

Page 94: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

82

4.4 Recepción de solicitud de ubicación.

Otra aplicación que se puede realizar utilizando la API es una en la que se solicita al usuario del dispositivo móvil su ubicación actual. La aplicación recibe un SMS que indica que se le está solicitando su ubicación, y después se conecta con un dispositivo GPS predeterminado, extrae los datos de ubicación y los envía a través de un mensaje SMS al número que se lo solicitó. En el MIDlet se recibe la petición y después de obtener la autorización del usuario del dispositivo móvil, invoca las clases necesarias para la obtención de los datos de ubicación. La Figura 4.7 muestra parte del código del MIDlet de la aplicación. El proceso para recibir el mensaje es el descrito en la sección 4.3 Lo diferente en esta aplicación es el URL que se le pasa al objeto conectorGPS, en este caso se le asigna una dirección URL ya conocida, como se muestra en la línea 8 de la Figura 4.8.

1 /* EnviaPeticionPush.java*/ 2 3 package query; 4 5 …

6 public class EnviaPeticionPush extends MIDlet implements CommandListener,Runnable {

7 … 8 public void startApp() { 9 display.setCurrent(datos);

10 try { 11 receptor=new Receptor(this,”50002”); 12 receptor.IniciarReceptor(); 13 } catch(ConexionSMSExcepcion ex) {

14 MuestraAlarma(“Ubicación un error ->”+ex.getMessage());

15 ex.printStackTrace(); 16 } 17 enEjecucion=true; 18 new Thread(this).start(); 19 } 20 21 … 22 public void run() { 23 … 24 while(enEjecucion){ 25 if(receptor.SiRecibido()){ 26 dir=receptor.LeeTelOrigen(); 27 usuario=receptor.LeeMensajeRecibido(); 28 MuestraAlarma(dir+”->”+usuario);

29

confirmacion.append(dir+”->”+usuario+” está solicitando su ubicación \n ¿Desea enviársela? \n Si elige Sí se conectará con un dispositivo GPS externo”);

Page 95: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Implementación

83

30 display.setCurrent(confirmacion); 31 } 32 } 33 }

34 public void commandAction(Command c, Displayable displayable) {

35 … 36 if (c==si){ 37 display.setCurrent(formEspera); 38 DatosGPS datosGPS=new DatosGPS(this, dir); 39 } 40 }

Figura 4.7 Recepción de petición de ubicación

1 /*DatosGPS.java */ 2 … 3 public class DatosGPS implements Runnable{ 4 … 5 public void run() { 6 NMEA nmea=new NMEA(); 7 SentenciaNMEA sentenciaNMEA=new SentenciaNMEA();

8

ConectorGPS conectorGPS =new ConectorGPS(sentenciaNMEA,”btspp://000B0D7005FB:1;authenticate=false;encrypt=false;master=false”);

9 conectorGPS.IniciarConexion(); 10 nmea=sentenciaNMEA.obtener(); 11 if(nmea.Esvalido()){ 12 String lat,lon; 13 boolean enviado=false; 14 lat=nmea.LeeLatitud(); 15 lon=nmea.LeeLongitud(); 16 try { 17 emisor= new Emisor(telefono); 18 emisor.EnviaMensaje(lat+’,’+lon); 19 enviado=�era; 20 System.out.println(“Mensaje Enviado”); 21 } catch(ConexionSMSExcepcion ex) { 22 ex.printStackTrace(); 23 principal.display.setCurrent(principal.datos); 24 principal.MuestraAlarma(ex.getMessage()); 25 } 26 if(enviado) 27 principal.display.setCurrent(principal.datos);

28 principal.MuestraAlarma(“Mensaje Enviado:\n”+lat+’,’+lon+”\n a la direccion “+telefono);

29 }else{ 30 principal.display.setCurrent(principal.datos); 31 principal.MuestraAlarma(nmea.Leegga()); 32 …

Figura 4.8 Obtención de ubicación y envío de respuesta

Page 96: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

CAPÍTULO 5 PRUEBAS

Page 97: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

En este capítulo se muestran los resultados obtenidos en cada caso de prueba realizado

Page 98: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 99: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

87

El plan de pruebas se titula APISMSLBS y se encuentra en el Anexo D. Se realizó siguiendo el estándar 829 de la IEEE [std829] Descripción del identificador:

API: Application Programming Interface SMS: Short Message Service. LBS: Location Based Services.

La siguiente lista define las características probadas:

Conexión al dispositivo GPS: Se verificó que las clases para la conexión

con dispositivo funcionaran de forma adecuada y que los datos extraídos fueran correctos.

Realización de la trama y envío de datos de solicitud al servidor: Se verificó que la clase que realiza las 16 tramas funcionara adecuadamente y que el envío al servidor, funcionara correctamente.

Interpretación de las 16 tramas y recepción de datos del servidor: Se verificó que la clase que interpreta las tramas funcionara correctamente y que la recepción de mensajes fuera la adecuada.

Dado que la mayoría de las pruebas se centraba en la correcta realización e interpretación de las tramas, sólo el caso de prueba APISMSLBS-201-001 interactuó con la parte servidora, las demás pruebas se realizaron con un solo celular sin la interacción con el servidor.

Se desarrollaron aplicaciones para dispositivos móviles que utilizaron la API. Dichas aplicaciones fueron instaladas y ejecutadas en un celular Nokia 9300i. Para aumentar la visibilidad de los resultados de las pruebas en el presente documento, se utilizaron emuladores con pantallas grandes.

Page 100: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

88

a. Inicio de aplicación b. Resultado de aplicación

CASO DE PRUEBA APISMSLBS-101-001 Búsqueda de dispositivos. DESCRIPCIÓN: Detectar los dispositivos bluetooth cercanos al GPS. La prueba se efectuó en un entorno con tres dispositivos que cuentan con conexiones bluetooth, el celular, el GPS, y otro dispositivo. Se inició la aplicación en el celular, teniendo habilitada la conexión bluetooth del mismo, y encendidos los demás dispositivos. RESULTADO: La aplicación mostró una lista con dos dispositivos móviles.

Figura 5.1 Lista de Dispositivos encontrados

OBSERVACIONES: La aplicación tardó aproximadamente 10 segundos en mostrar la lista.

Page 101: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

89

CASO DE PRUEBA APISMSLBS-101-002 Extracción de datos GPS DESCRIPCIÓN: Extraer los datos de ubicación del dispositivo GPS. Considerando el resultado de la prueba APISMSLBS-101-001 anterior, se seleccionó el dispositivo GPS y se realizó la conexión para extraer los datos de ubicación. RESULTADO: La aplicación mostró los datos de ubicación como lo muestra la Figura 5.2.

Figura 5.2 Datos de ubicación obtenidos Se verificó la información obtenida utilizando Google Earth. El resultado se muestra en la Figura 5.3

Figura 5.3 Verificación de las coordenadas en google Earth

OBSERVACIONES: La aplicación tardó aproximadamente 3 segundos en realizar la conexión y 4 en mostrar los resultados.

Page 102: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

90

CASO DE PRUEBA APISMSLBS-201-001 Consulta georeferenciada para solicitar sitios de interés. DESCRIPCIÓN: Enviar una consulta georeferenciada al servidor solicitando las escuelas cercanas al punto de localización del cliente móvil y recibir la repuesta. RESULTADO:

Figura 5.4 Solicitud de las escuelas cercanas.

Figura 5.5 Ventana de información con la trama de consulta.

Figura 5.6 Ventana de Información con la primera trama de respuesta.

Figura 5.7 Datos del primer mensaje de respuesta.

Se observa que el número de respuestas es cuatro y se recibieron dos, por lo tanto existen dos más, se solicitaron las siguientes dos respuestas.

Figura 5.8 Ventana de Información con la segunda trama de respuesta

Figura 5.9 Datos del segundo mensaje de respuesta

Page 103: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

91

CASO DE PRUEBA APISMSLBS-201-002 Consulta no georeferenciada para solicitar sitios de

interés. DESCRIPCIÓN: Enviar una consulta no georeferenciada solicitando la farmacia más cercana al punto de localización del cliente. Probar la correcta creación e interpretación de la trama de tipo Q_NOGEO_UBICACION. RESULTADO: Datos enviados:

Figura 5.10 Solicitud de las farmacias cercanas indicando dirección

Trama enviada y recibida

Figura 5.11 Trama enviada

Figura 5.12 Trama Recibida.

Trama Interpretada:

Figura 5.13 Interpretación de trama

Page 104: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

92

CASO DE PRUEBA APISMSLBS-201-003 Consulta georeferenciada para solicitar eventos

cercanos. DESCRIPCIÓN: Enviar una consulta georeferenciada solicitando los eventos cercanos al punto de localización del cliente móvil. Probar la correcta creación e interpretación de la trama de tipo Q_GEO_EVENTO. RESULTADO: Datos enviados:

Figura 5.14 Consulta georeferenciada de evento cultural

Trama enviada y recibida

Figura 5.15 Trama enviada

Figura 5.16 Trama recibida

Trama Interpretada:

Figura 5.17 Interpretación de la trama

Page 105: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

93

CASO DE PRUEBA APISMSLBS-201-004 Consulta no georeferenciada para solicitar eventos

cercanos. DESCRIPCIÓN: Enviar una consulta no georeferenciada solicitando los eventos cercanos al punto de localización del cliente móvil. Probar la correcta creación e interpretación de la trama de tipo Q_NOGEO_EVENTO. RESULTADO: Datos enviados:

Figura 5.18 Consulta no georeferenciada de evento cultural.

Trama enviada y recibida

Figura 5.19 Trama enviada

Figura 5.20 Trama Recibida

Trama Interpretada:

Figura 5.21 Interpretación de la trama

Page 106: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

94

CASO DE PRUEBA APISMSLBS-201-005 Consulta para solicitar un camino cuyo inicio y fin

están representados por un punto georeferenciado. DESCRIPCIÓN: Enviar una consulta para solicitar un camino cuyo inicio y fin están representados por un punto georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_GEO_GEO. RESULTADO: Datos enviados:

Figura 5.22 Consulta de un camino con inicio y fin georeferenciados

Trama enviada y recibida

Figura 5.23 Trama enviada

Figura 5.24 Trama recibida

Trama Interpretada:

Figura 5.25 Interpretación de la trama

Page 107: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

95

CASO DE PRUEBA APISMSLBS-201-006 Consulta para solicitar un camino donde su inicio

está representado por un punto georeferenciado y su fin por un punto no georeferenciado.

DESCRIPCIÓN: Enviar una consulta para solicitar un camino donde su inicio está representado por un punto georeferenciado y su fin por un punto no georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_GEO_NOGEO. RESULTADO: Datos enviados:

Figura 5.26 Solicitud de camino con punto inicial georeferenciado y final no georeferenciado.

Trama enviada y recibida:

Figura 5.27 Trama Enviada

Figura 5.28 Trama recibida

Trama Interpretada:

Figura 5.29 Interpretación de la trama

Page 108: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

96

CASO DE PRUEBA APISMSLBS-201-007 Consulta para solicitar un camino donde su inicio

está representado por un punto no georeferenciado y su fin por un punto georeferenciado.

DESCRIPCIÓN: Enviar una consulta solicitando un camino donde su inicio está representado por un punto no georeferenciado y su fin por un punto georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_NOGEO_GEO. RESULTADO: Datos enviados:

Figura 5.30 Consulta de un camino con inicio no georeferenciado y fin georeferenciado

Trama enviada y recibida:

Figura 5.31 Trama Enviada

Figura 5.32 Trama Recibida

Trama Interpretada:

Figura 5.33 Interpretación de la trama.

Page 109: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

97

CASO DE PRUEBA APISMSLBS-201-008 Consulta para solicitar un camino cuyo inicio y fin está

representado por un punto no georeferenciado. DESCRIPCIÓN: Enviar una consulta solicitando un camino cuyo inicio y fin está representado por un punto no georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_NOGEO_NOGEO. RESULTADO: Datos enviados:

Figura 5.34 Solicitud de camino con inicio y fin no georeferenciados

Trama enviada y recibida:

Figura 5.35 Trama enviada

Figura 5.36 Trama Recibida

Trama Interpretada:

Figura 5.37Interpretación de trama

Page 110: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

98

CASO DE PRUEBA APISMSLBS-201-009 Consulta georeferenciada para solicitar el clima

utilizando la posición del usuario. DESCRIPCIÓN: Enviar una consulta georeferenciada solicitando el clima utilizando la localización del cliente móvil. Probar la correcta creación e interpretación de la trama de tipo Q_GEO_CLIMA. RESULTADO: Datos enviados:

Figura 5.38 Solicitud georeferenciada de Clima

Trama enviada y recibida:

Figura 5.39 Trama enviada

Figura 5.40 Trama recibida

Trama Interpretada:

Figura 5.41 Trama Interpretada

Page 111: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

99

CASO DE PRUEBA APISMSLBS-201-010 Consulta no georeferenciada para solicitar el clima

utilizando la posición del usuario. DESCRIPCIÓN: Enviar una consulta no georeferenciada solicitando el clima utilizando la posición del usuario. Probar la correcta creación e interpretación de la trama de tipo Q_NOGEO_CLIMA. RESULTADO: Datos Enviados:

Figura 5.42 Solicitud de clima de Cuernavaca

Trama enviada y recibida:

Figura 5.43 Trama Enviada

Figura 5.44 Trama Recibida

Trama Interpretada:

Figura 5.45 Interpretación de la trama

Page 112: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

100

CASO DE PRUEBA APISMSLBS-201-011 Respuesta georeferenciada de ubicación. DESCRIPCIÓN: Enviar una respuesta con puntos de interés georeferenciados con información extra de cada punto y con información adicional en la trama. Probar la correcta creación e interpretación de la trama de tipo R_GEO_UBICACION y de los elementos adicionales. RESULTADO: Datos Enviados:

Figura 5.46 Respuesta Georeferenciada de ubicación

Trama enviada y recibida:

Figura 5.47 Trama Enviada

Figura 5.48 Trama Recibida

Trama Interpretada:

Figura 5.49 Interpretación de la trama

Page 113: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

101

CASO DE PRUEBA APISMSLBS-201-012 Respuesta de camino. DESCRIPCIÓN: Enviar una respuesta con puntos georeferenciados. Probar la correcta creación e interpretación de la trama de tipo R_GEO_CAMINO. RESULTADO: Datos Enviados:

Figura 5.50 respuesta de camino

Trama enviada y recibida:

Figura 5.51 Trama Enviada

Figura 5.52 Trama Recibida

Trama Interpretada:

Figura 5.53 Trama Interpretada

Page 114: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

102

CASO DE PRUEBA APISMSLBS-201-013 Respuesta georeferenciada de evento. DESCRIPCIÓN: Enviar un objeto Evento donde su ubicación sea un punto georeferenciado. Probar la correcta creación e interpretación de la trama de tipo R_GEO_EVENTO. RESULTADO: Datos Enviados:

Figura 5.54 Respuesta Georeferenciada de Evento

Trama enviada y recibida:

Figura 5.55 Trama Recibida

Figura 5.56 Trama Enviada

Trama Interpretada:

Figura 5.57 Interpretación de la trama

Page 115: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

103

CASO DE PRUEBA APISMSLBS-201-014 Respuesta de clima. DESCRIPCIÓN: Enviar un objeto Clima. Probar la correcta creación e interpretación de la trama de tipo R_CLIMA. RESULTADO: Datos Enviados:

Figura 5.58 Respuesta de Clima

Trama enviada y recibida:

Figura 5.59 Trama Enviada

Figura 5.60 Trama Recibida

Trama Interpretada:

Figura 5.61 Trama Interpretada

Page 116: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Pruebas

104

CASO DE PRUEBA APISMSLBS-201-015 Respuesta no georeferenciada de evento. DESCRIPCIÓN: Enviar un objeto Evento donde su ubicación sea un punto no georeferenciado. Probar la correcta creación e interpretación de la trama de tipo R_NOGEO_EVENTO. RESULTADO: Datos Enviados:

Figura 5.62 Respuesta no georeferenciada de evento.

Trama enviada y recibida:

Figura 5.63 Trama Enviada

Figura 5.64 Trama Recibida

Trama Interpretada:

Figura 5.65 Trama Interpretada

Page 117: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

CAPÍTULO 6 CONCLUSIONES

En este capítulo se muestran las conclusiones aportaciones, trabajos futuros, publicaciones que se obtuvieron con el presente trabajo de tesis

Page 118: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 119: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Conclusiones

107

6.1 Conclusiones

Con el presente trabajo se tiene una API que permite realizar aplicaciones basadas en localización para dispositivos móviles con MIDP 2.0 ofreciendo como ventaja la independencia de la red de la operadora móvil y el auge de los SMS. Con la investigación realizada sobre programación para dispositivos móviles, que es la parte medular de este proyecto, se comprobó que es factible el desarrollo de aplicaciones basadas en localización utilizando J2ME, GPS y SMS. Se logró la implementación de un entorno de desarrollo de aplicaciones de dispositivos móviles basado en software libre compuesto por NetBeans, sdk Series 80 Nokia y sdk Sony Ericsson. Con el presente trabajo se logró obtener conocimiento acerca de los sistemas de información geográfica, servicios basados en localización y tecnologías de posicionamiento. Se obtuvo información acerca de las tecnologías que involucran los servicios basados en localización y sus aplicaciones. De la investigación realizada se puede observar que en el mundo existe mucho camino recorrido en lo referente a aplicaciones basadas en localización, sin embargo en México se trata de un área emergente, por lo que hay muchos espacios de oportunidad para realizar investigación en este tema. En cuanto a las tecnologías de posicionamiento, se analizaron las ventajas y desventajas de cada una de ellas para elegir la más adecuada para el presente proyecto de tesis. En lo que se refiere a dispositivos GPS y los sistemas de proyección, se llegó a la conclusión que no es necesaria realizar ninguna conversión de proyección entre las coordenadas obtenidas del GPS y las coordenadas a enviar en el SMS, la configuración del sistema de proyección a utilizar se realiza directamente en el dispositivo GPS. Se observó que la API no es funcional para dispositivos BlackBerry ya que éstos utilizan una API especial para la conexión bluetooth que no es compatible con J2ME. Sin embargo se puede hacer compatible con java si se utiliza el BlackBerry Java Development Environment. En la etapa de pruebas se pudo comprobar que la interfaz gráfica de usuario no funciona igual en todos los teléfonos. Por lo que si se realizan interfaces gráficas, se debe considerar las características específicas de la pantalla del dispositivo móvil.

Page 120: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Conclusiones

108

Se observó también que es importante la versión de la máquina virtual de java que el dispositivo móvil tiene instalada, fue por eso que se delimitó la API a dispositivos con el perfil MIDP 2.0.

6.2 Aportaciones

• La elaboración de una API que permite:

Conectar el dispositivo móvil con un dispositivo GPS externo por medio de bluetooth.

Elaboración e interpretación de tramas de consulta y respuesta. Envío y recepción de mensajes SMS.

• Se diseñaron 16 tramas que permiten representar consultas y respuestas

georeferenciadas y no georeferenciadas, y que además optimizan el uso de los 160 caracteres del SMS.

• El desarrollo de una parte de la plataforma que agrupa diversas tecnologías

basados en software libre que permite proporcionar servicios basados en localización de distintas categorías.

• Se desarrollaron aplicaciones para dispositivos móviles con el perfil MIDP

2.0 entre las que destacan: Sistema cliente para búsqueda de servicios. Sistema receptor de peticiones de ubicación.

Las cuales fueron probadas en los dispositivos Nokia 9300i, Sony Ericsson W300 y en los emuladores comprendidos en el Sony Ericsson sdk 2.4.4 [sdksony]

6.3 Trabajos futuros

Los elementos de un sistema basado en localización que comprende el presente trabajo son: uso de una tecnología de posicionamiento, medio de transporte y presentación de la información, en este orden surgen posibles trabajos futuros.

• La conexión con el dispositivo GPS se hace utilizando bluetooth, se puede

ampliar el paquete mx.edu.cenidet.apisms.conexiongps para que ofrezca funciones que permitan detectar dispositivos GPS internos al dispositivo móvil.

Page 121: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Conclusiones

109

• Se pueden crear funciones dentro del paquete mx.edu.cenidet.apisms.conexiongps que permitan la conexión bluetooth entre receptores GPS y dispositivos móviles BlackBerry.

• A pesar de que la técnica de posicionamiento utilizada en este trabajo ofrece la ventaja de no depender de la red de la operadora móvil, se puede ampliar la API, para que ofrezca la obtención de la ubicación del dispositivo móvil utilizando otras técnicas de posicionamiento.

• Se pueden crear funciones que permitan el envío de la información por otro

medio de transporte que no sea SMS, por ejemplo se puede crear un paquete mx.edu.cenidet.apisms.conexionhttp.

• Actualmente la información se presenta en modo texto, otro trabajo fututo

podría ser desarrollar funciones que permitan mostrar la información de manera gráfica en mapas.

Además de los puntos mencionados anteriormente se proponen otros trabajos futuros: • Utilizar técnicas de codificación sofisticadas para aprovechar al máximo los

160 caracteres ofrecidos por el SMS. • Implementar un mecanismo de compresión de SMS.

6.4 Publicaciones

Se logró la publicación de dos artículos en calidad de afiche en el VII Congreso de Sistemas de Telecomunicaciones efectuado en la Ciudad de Guayaquil, Ecuador del 24 al 27 de Enero de 2007. Los artículos aparecen en la revista Tendencias con ISSN 1390-3608

Propuesta de una API SMS usando GPS para procesamiento de consultas georeferenciadas / no georeferenciadas.

Tecnologías basadas en localización y análisis de técnicas de posicionamiento.

Se obtuvo el 2º lugar en el XII Concurso de creatividad de los Institutos Tecnológicos en su fase local.

Page 122: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

ANEXOS

Page 123: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 124: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas
Page 125: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

113

ANEXO A DOCUMENTACION DE LA API

Package mx.edu.cenidet.apisms.conexiongps

Class Summary

ConectorBT La clase ConectorBT proporciona métodos para la detección de dispositivos Bluetooth y búsqueda de URL del GPS que se utiliza para la extracción de datos en la clase ConectorGPS

ConectorGPS La clase ConectorGPS representa la conexión con el GPS.

Dispositivos La clase Dispositivos contiene métodos para leer la lista de dispositivos encontrados, así como el URL de los servicios ofrecidos por un dispositivo.

NMEA La clase NMEA contiene métodos para leer los datos de ubicación.

SentenciaNMEA Representa la sentencia extraída del GPS.

Exception Summary

ConectorBTExcepcion Si el sistema Bluetooth del dispositivo móvil está desactivado, o si no puede cambiar el modo del bluetooth local para iniciar con el descubrimiento de dispositivos.

mx.edu.cenidet.apisms.conexiongps Class ConectorBT

java.lang.Object

mx.edu.cenidet.apisms.conexiongps.ConectorBT

All Implemented Interfaces: java.lang.Runnable, javax.bluetooth.DiscoveryListener

public class ConectorBT extends java.lang.Object implements javax.bluetooth.DiscoveryListener, java.lang.Runnable

La clase ConectorBT proporciona métodos para la detección de dispositivos Bluetooth y búsqueda de URL del GPS que se utiliza para la extracción de datos en la clase ConectorGPS

Fields inherited from interface javax.bluetooth.DiscoveryListener INQUIRY_COMPLETED, INQUIRY_ERROR, INQUIRY_TERMINATED, SERVICE_SEARCH_COMPLETED, SERVICE_SEARCH_DEVICE_NOT_REACHABLE, SERVICE_SEARCH_ERROR, SERVICE_SEARCH_NO_RECORDS, SERVICE_SEARCH_TERMINATED

Constructor Summary ConectorBT(Dispositivos dispositivos) Crea una nueva instancia de ConectorBTooth.

Method Summary void BuscarServicios(int dispositivoSeleccionado)

Realiza la búsqueda de servicios de un dispositivo remoto.

Void CancelarBusquedaDipositivos() Cancela la búsqueda de dispositivos.

Void CancelarBusquedaURL() Cancela la búsqueda de URL del dispositivo.

Void IniciaBTooth() Inicia el dispositivos bluetooth.

Void IniciaBusqueda() Inicia la búsqueda de dispositivos bluetooth.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

ConectorBT public ConectorBT(Dispositivos dispositivos)

Crea una nueva instancia de ConectorBTooth. Parameters: dispositivos – Recibe como parámetro un objeto de la clase Dispositivos, es en este objeto donde se guardarán los dispositivos y servicios encontrados.

Method Detail

IniciaBTooth public void IniciaBTooth() throws ConectorBTExcepcion

Inicia el dispositivo bluetooth. Prepara el sistema Bluetooth del dispositivo móvil, cambia su estado para detectar los dispositivos bluetooth cercanos.

Field Summary

Page 126: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

114

Throws: ConectorBTExcepcion – Si el sistema Bluetooth del dispositivo móvil está desactivado

CancelarBusquedaDipositivos public void CancelarBusquedaDipositivos() throws ConectorBTExcepcion

Cancela la búsqueda de dispositivos. Throws: ConectorBTExcepcion – Si no se puede cancelar la búsqueda.

CancelarBusquedaURL public void CancelarBusquedaURL()

Cancela la búsqueda de URL del dispositivo.

IniciaBusqueda public void IniciaBusqueda()

Inicia la búsqueda de dispositivos bluetooth. Los dispositivos encontrados se guardan en un vector al cual se tiene acceso utilizando el método LeeDispositivos de la clase Dispositivos

BuscarServicios public void BuscarServicios(int dispositivoSeleccionado) throws ConectorBTExcepcion

Realiza la búsqueda de servicios de un dispositivo remoto. Parameters: dispositivoSeleccionado – Índice del dispositivo dentro del vector de dispositivos remotos encontrados Throws: ConectorBTExcepcion – Si existen demasiadas búsquedas concurrentes

mx.edu.cenidet.apisms.conexiongps Class ConectorGPS

java.lang.Object

java.lang.Thread

mx.edu.cenidet.apisms.conexiongps.ConectorGPS

All Implemented Interfaces: java.lang.Runnable

public class ConectorGPS extends java.lang.Thread

La clase ConectorGPS representa la conexión con el GPS. La clase realiza la extracción de la cadena GGA del positivo GPS pero ésta es accedida por medio del objeto SentenciaNMEA que recibe como parámetro en el constructor.

Field Summary

Fields inherited from class java.lang.Thread MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY

Constructor Summary ConectorGPS(SentenciaNMEA sentenciaNMEA, java.lang.String dir) Crea una instancia de la clase ConectorGPS

Method Summary void IniciarConexion()

Inicia la conexión con el dispositivo bluetooth.

Methods inherited from class java.lang.Thread activeCount, currentThread, getName, getPriority, interrupt, isAlive, join, setPriority, sleep, start, toString, yield

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

ConectorGPS public ConectorGPS(SentenciaNMEA sentenciaNMEA, java.lang.String dir)

Crea una instancia de la clase ConectorGPS Parameters: sentenciaNMEA – En este objeto se guarda la sentencia GGA extraída del dispositivo GPS dir – Representa el URL del dispositivo bluetooth al que se intenta conectar.

Method Detail

IniciarConexion public void IniciarConexion()

Inicia la conexión con el dispositivo bluetooth. Una vez establecida la conexión se intenta extraer la cadena GGA del dispositivo GPS. Si el dispositivo al que se intenta conectar no es un GPS, no se podrá extraer la sentencia GGA, y el objeto SentenciaNMEA guardará la cadena No se pudo extraer sentencia GGA.

Page 127: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

115

Si ocurre un error en la conexión, el objeto SentenciaNMEA guardará la cadena Ocurrió el error: error.

mx.edu.cenidet.apisms.conexiongps Class Dispositivos

java.lang.Object

mx.edu.cenidet.apisms.conexiongps.Dispositivos

public class Dispositivos extends java.lang.Object

La clase Dispositivos contiene métodos para leer la lista de dispositivos encontrados, así como el URL de los servicios ofrecidos por un dispositivo.

Constructor Summary Dispositivos() Crea una nueva instancia de Dispositivos

Method Summary java.util.Vector LeeDispositivos()

Lee la lista de nombres de los dispositivos encontrados.

Java.lang.String LeeURL() Regresa el URL del dispositivo remoto.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Dispositivos public Dispositivos()

Crea una nueva instancia de Dispositivos

Method Detail

LeeDispositivos public java.util.Vector LeeDispositivos()

Lee la lista de nombres de los dispositivos encontrados. Returns: Regresa un vector con los nombres de los dispositivos encontrados

LeeURL public java.lang.String LeeURL()

Regresa el URL del dispositivo remoto. El URL es de la forma: btspp://000B0D7005FB:1;authenticate=false;encrypt=false;master=false. Si no se puede obtener el URL del dispositivo seleccionado devuelve: DISPOSITIVO INALCANZABLE Si el dispositivo seleccionado no ofrece ningún servicio devuelve: NO SE ENCONTRARON SERVICIOS Si se interrumpe la lectura del URL del dispositivo por medio del método CancelarBusquedaURL de la clase ConectorBT devuelve: BUSQUEDA CANCELADA Returns: La URL obtenida o el mensaje correspondiente.

mx.edu.cenidet.apisms.conexiongps Class NMEA

java.lang.Object

mx.edu.cenidet.apisms.conexiongps.NMEA

public class NMEA extends java.lang.Object

La clase NMEA contiene métodos para leer los datos de ubicación. Los datos que se pueden acceder son: latitud, longitud, altitud, precisión, Num de satélites, sentencia GGA

Constructor Summary NMEA() Crea una nueva instancia de NMEA.

NMEA(java.lang.String latitud, java.lang.String longitud, java.lang.String altitud, java.lang.String sats, java.lang.String pres, java.lang.String validez, java.lang.String gga) Crea una nueva instancia de NMEA indicándole los datos de latitud, longitud, altitud, número de satélites, Precisión, validez y la cadena GGA.

Method Summary boolean Esvalido()

Indica si la lectura del GPS es válida.

Java.lang.String LeeAltitud() Lee la longitud obtenida del GPS.

Java.lang.String Leegga() Lee la cadena GGA extraída del dispositivo GPS.

Java.lang.String LeeLatitud() Lee la latitud obtenida del GPS.

Java.lang.String LeeLongitud() Lee la longitud obtenida del GPS.

Page 128: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

116

Int LeeNumSatelites() Lee el numero de satélites en vista del dispositivo GPS.

Float LeePresicion() Indica la precisión en metros.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

NMEA public NMEA()

Crea una nueva instancia de NMEA.

NMEA public NMEA(java.lang.String latitud, java.lang.String longitus, java.lang.String altitud, java.lang.String sats, java.lang.String pres, java.lang.String validez, java.lang.String gga)

Crea una nueva instancia de NMEA indicándole los datos de latitud, longitud, altitud, número de satélites, Precisión, validez y la cadena GGA. Parameters: latitud – La Latitud expresada en grados. Longitud – La longitud expresada en grados altitud – La altitud sats – El número de satélites en vista pres – La precisión validez – La validez �era o false gga – La cadena GGA

Method Detail

�era public java.lang.String Leegga()

Lee la cadena GGA extraída del dispositivo GPS. Si la extracción se realizó con éxito devolverá una cadena de la forma: $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,, Si ocurrió un error en la conexión devolverá la cadena: Ocurrió el error: error Si el dispositivo al que se conectó no es un GPS ó si no se puede extraer la cadena, devolverá No se pudo extraer sentencia GGA Returns: La cadena GGA extraída del dispositivo GPS.

LeeLatitud public java.lang.String LeeLatitud()

Lee la latitud obtenida del GPS. Regresa una cadena con la latitud en grados de la siguiente forma: 16.9385769. Returns: La cadena con la altitud expresada en grados.

LeeLongitud public java.lang.String LeeLongitud()

Lee la longitud obtenida del GPS. Regresa una cadena con la longitud en grados de la siguiente forma: 99.9385769. Returns: La cadena con la longitud expresada en grados.

LeeAltitud public java.lang.String LeeAltitud()

Lee la longitud obtenida del GPS. Regresa una cadena con la altitud en metros. Returns: La cadena con la latitud en metros

LeePresicion public float LeePresicion()

Indica la precisión en metros. Returns: La precisión en metros.

LeeNumSatelites public int LeeNumSatelites()

Lee el número de satélites en vista del dispositivo GPS. Returns: El número de satélites en vista.

Esvalido public boolean Esvalido()

Indica si la lectura del GPS es válida. Dependiendo del número de satélites en vista se puede determinar si los datos extraídos del GPS son válidos. Si ocurrió un error en la conexión devolverá false. Returns: Retorna verdadero si la lectura es válida y falso en caso contrario.

mx.edu.cenidet.apisms.conexiongps Class SentenciaNMEA

java.lang.Object

mx.edu.cenidet.apisms.conexiongps.SentenciaNMEA

public class SentenciaNMEA extends java.lang.Object

Representa la sentencia extraída del GPS.

Page 129: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

117

Constructor Summary SentenciaNMEA() Creates a new instance of SentenciaNMEA

Method Summary void establecer(NMEA valor)

Escribe la sentencia obtenida del GPS.

NMEA obtener() Lee el objeto NMEA contenido en la sentencia.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SentenciaNMEA public SentenciaNMEA()

Creates a new instance of SentenciaNMEA

Method Detail

establecer public void establecer(NMEA valor)

Escribe la sentencia obtenida del GPS. Parameters: valor – el objeto NMEA que contiene los métodos para leer los datos de la sentencia.

obtener public NMEA obtener()

Lee el objeto NMEA contenido en la sentencia. Returns: el objeto NMEA con la información de ubicación.

mx.edu.cenidet.apisms.conexiongps Class ConectorBTExcepcion

java.lang.Object

java.lang.Throwable

java.lang.Exception

mx.edu.cenidet.apisms.conexiongps.ConectorBTExcepcion

public class ConectorBTExcepcion

extends java.lang.Exception

Si el sistema Bluetooth del dispositivo móvil está desactivado, o si no puede cambiar el modo del bluetooth local para iniciar con el descubrimiento de dispositivos.

Constructor Summary ConectorBTExcepcion(java.lang.String error) Crea una estancia de la clase ConectorBTExcepcion

Method Summary

Methods inherited from class java.lang.Throwable getMessage, printStackTrace, toString

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

ConectorBTExcepcion public ConectorBTExcepcion(java.lang.String error)

Crea una estancia de la clase ConectorBTExcepcion Parameters: error – El motivo del error.

Package mx.edu.cenidet.apisms.conexionsms

Class Summary Emisor Representa la conexión con el dispositivo remoto al que se le envía la información.

Receptor Representa la conexión con el dispositivo remoto del que se está recibiendo la información.

Exception Summary

ConexionSMSExcepcion Si ocurre un error al momento de iniciar la conexión, enviar o recibir el mensaje, o al cerrar la conexión.

Page 130: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

118

mx.edu.cenidet.apisms.conexionsms Class Emisor

java.lang.Object

mx.edu.cenidet.apisms.conexionsms.Emisor

public class Emisor extends java.lang.Object

Representa la conexión con el dispositivo remoto al que se le envía la información.

Constructor Summary Emisor(java.lang.String direccion) Crea una nueva instancia Emisor.

Emisor(java.lang.String telefono, java.lang.String puerto) Crea una nueva instancia Emisor.

Method Summary void EnviaMensaje(java.lang.String trama)

Envía el SMS al receptor.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Emisor public Emisor(java.lang.String telefono, java.lang.String puerto) throws ConexionSMSExcepcion

Crea una nueva instancia Emisor. Indicando el número telefónico del receptor y el puerto. Realiza la conexión con el receptor, dejándola lista para el envío del SMS. Parameters: telefono – Indica el número telefónico al que se le enviará el SMS con la información. Puerto – Es un identificador que indica al receptor que se trata de un SMS con información de ubicación que será interpretado con las funciones de la API. Throws: ConexionSMSExcepcion – Si ocurre un error de Entrada/Salida al iniciar la conexión.

Emisor public Emisor(java.lang.String direccion) throws ConexionSMSExcepcion

Crea una nueva instancia Emisor. Indicando el número telefónico del receptor y el puerto. Realiza la conexión con el receptor, dejándola lista para el envío del SMS. Parameters:

direccion – Indica la dirección completa del receptor. Incluye el número de teléfono y el identificador (puerto) del dispositivo destino. Es útil cuando la direccion destino se ha obtenido con el método LeeTelOrigen de la clase Receptor Throws: ConexionSMSExcepcion – Si ocurre un error de Entrada/Salida al iniciar la conexión.

Method Detail

EnviaMensaje public void EnviaMensaje(java.lang.String trama) throws ConexionSMSExcepcion

Envía el SMS al receptor. Parameters: trama – Es el mensaje a enviar. El programador debería asignar a este parámetro el valor devuelto por el método LeeTrama() de la clase Mensaje del paquete mx.edu.cenidet.apisms.trama. Throws: ConexionSMSExcepcion – Si sucede un error de conexión, o de Entrada/Salida al enviar el mensaje.

mx.edu.cenidet.apisms.conexionsms Class Receptor

java.lang.Object

mx.edu.cenidet.apisms.conexionsms.Receptor

All Implemented Interfaces: javax.wireless.messaging.MessageListener

public class Receptor extends java.lang.Object implements javax.wireless.messaging.MessageListener

Representa la conexión con el dispositivo remoto del que se está recibiendo la información.

Esta clase escribe en el PushRegistry del teléfono

El PushRegistry es una lista que relaciona las conexiones entrantes del teléfono, un identificador (puerto) y un MIDlet

El Application Management Software (AMS) del teléfono, escucha permanentemente todas las conexiones entrantes. Cuando llega una nueva, verifica en la lista del PushRegistry si existe un MIDlet relacionado con dicha conexión e identificador y de ser así inicia el MIDlet.

Constructor Summary Receptor(javax.microedition.midlet.midlet midlet, java.lang.String puerto) Crea una nueva instancia de Receptor

Method Summary void CierraReceptor()

Page 131: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

119

Cierra la conexión.

Void IniciarReceptor() Inicia el receptor, realiza la conexión SMS para recibir los mensajes.

Java.lang.String LeeMensajeRecibido() Método para leer el mensaje recibido.

Java.lang.String LeeTelOrigen() Regresa la dirección origen.

Void notifyIncomingMessage(javax.wireless.messaging.MessageConnection messageConnection)

boolean SiRecibido() Verifica si se ha recibido algún mensaje.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Receptor public Receptor(javax.microedition.midlet.midlet midlet, java.lang.String puerto) throws ConexionSMSExcepcion

Crea una nueva instancia de Receptor Parameters: midlet – Representa el MIDlet de la aplicación. Puerto – Es el identificador del puerto en el que se desea recibir los SMS entrantes. Throws: ConexionSMSExcepcion – Si no se puede registrar el puerto en el PushRegistry

Method Detail

IniciarReceptor public void IniciarReceptor() throws ConexionSMSExcepcion

Inicia el receptor, realiza la conexión SMS para recibir los mensajes. Throws: ConexionSMSExcepcion – Si ocurre un error con la conexión

notifyIncomingMessage public void notifyIncomingMessage(javax.wireless.messaging.MessageConnection messageConnection)

Specified by: notifyIncomingMessage in interface javax.wireless.messaging.MessageListener

LeeMensajeRecibido public java.lang.String LeeMensajeRecibido()

Método para leer el mensaje recibido. Se debe ejecutar una vez que el Método SiRecibido retorna un valor verdadero. Returns:

Una cadena con el mensaje recibido.

SiRecibido public boolean SiRecibido()

Verifica si se ha recibido algún mensaje. Returns: Regresa verdadero si ya se ha recibido algún mensaje y falso en caso contrario.

LeeTelOrigen public java.lang.String LeeTelOrigen()

Regresa la dirección origen. Returns: La dirección de la que se originó el mensaje.

CierraReceptor public void CierraReceptor()

Cierra la conexión.

mx.edu.cenidet.apisms.conexionsms Class ConexionSMSExcepcion

java.lang.Object

java.lang.Throwable

java.lang.Exception

mx.edu.cenidet.apisms.conexionsms.ConexionSMSExcepcion

public class ConexionSMSExcepcion extends java.lang.Exception

Si ocurre un error al momento de iniciar la conexión, enviar o recibir el mensaje, o al cerrar la conexión.

Constructor Summary ConexionSMSExcepcion(java.lang.String error) Crea una nueva instancia de ConexionSMSExcepcion.

Method Summary

Methods inherited from class java.lang.Throwable getMessage, printStackTrace, toString

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Page 132: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

120

Constructor Detail

ConexionSMSExcepcion public ConexionSMSExcepcion(java.lang.String error)

Crea una nueva instancia de ConexionSMSExcepcion. Parameters: error – El motivo del error.

Package mx.edu.cenidet.apisms.dato

Class Summary

Camino La clase camino representa una consulta de camino, contiene el punto inicial y final.

Clima Representa la respuesta a una consulta de clima.

Evento Representa un evento.

Poi Representa un punto de interés.

PoiGeoreferenciado Representa un punto de interés georeferenciado.

PoiNoGeoreferenciado Representa un punto de interés no georeferenciado.

mx.edu.cenidet.apisms.dato Class Camino

java.lang.Object

mx.edu.cenidet.apisms.dato.Camino

public class Camino extends java.lang.Object

La clase camino representa una consulta de camino, contiene el punto inicial y final. Guarda el punto inicial en la posición 0 y el punto final en la posición1 de un vector. Para leer los puntos inicial y final se utilizan los métodos LeePuntoGeo(int pos)y LeePuntoNogeo(int pos)

Existen cuatro tipos de consulta de camino:

Tipo Descripción

INI_GEO__FIN_GEO

Indica que el inicio y el fin del camino que se está solicitando son dos puntos georeferenciados. Ejemplo: Inicio:16.2581337,-99.2415861 Fin:17.2593474,-98.753916

INI_GEO__FIN_NOGEO Indica que el inicio del camino solicitado es un punto georeferenciado y el fin es un

punto no georeferenciado.Ejemplo: Inicio:16.2581337,-99.2415861 Fin: Av. Estado de Puebla No 71c Colonia Lázaro Cárdenas Cuernavaca

INI_NOGEO__FIN_GEO

Indica que el inicio del camino solicitado es un punto no georeferenciado y el fin es un punto georeferenciado.Ejemplo: Inicio: Av. Estado de Puebla No 71c Colonia Lázaro Cárdenas CuernavacaFin:16.2581337,-99.2415861

INI_NOGEO__FIN_NOGEO

Indica que el inicio y el fin del camino solicitado es un punto no georeferenciado.Ejemplo: Inicio: Av. Estado de Puebla No 71c Colonia Lázaro Cárdenas CuernavacaFin: Internado Palmira No 45 Colonia Palmira, Cuernavaca

La respuesta a una consulta camino NO es un objeto Camino, sino un arreglo de PuntoGeoreferenciado.

Field Summary static int INI_GEO__FIN_GEO

Indica que el camino tiene como punto inicial y final un punto georeferenciado.

Static int INI_GEO__FIN_NOGEO Indica que el camino tiene como inicio un punto georeferenciado y como fin un punto no georeferenciado.

Static int INI_NOGEO__FIN_GEO Indica que el camino tiene como inicio un punto no georeferenciado y como fin un punto georeferenciado.

Static int INI_NOGEO__FIN_NOGEO Indica que el camino tiene como inicio un punto georeferenciado y como fin un punto no georeferenciado.

Constructor Summary Camino(int tipo) Crea una instancia de Camino.

Method Summary PoiGeoreferenciado LeePuntoGeo(int pos)

Lee el punto no georeferenciado.

PoiNoGeoreferenciado LeePuntoNoGeo(int pos) Lee el punto georeferenciado.

Int LeeTipoCamino() Lee el tipo de camino.

Void QueryCamino(PoiGeoreferenciado ini, PoiGeoreferenciado _fin) Crea una consulta de camino tipo INI_GEO__FIN_GEO

Page 133: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

121

void QueryCamino(PoiGeoreferenciado ini, PoiNoGeoreferenciado _fin) Crea una consulta de camino tipo INI_GEO__FIN_NOGEO.

Void QueryCamino(PoiNoGeoreferenciado ini, PoiGeoreferenciado _fin) Crea una consulta de camino tipo INI_NOGEO__FIN_GEO.

Void QueryCamino(PoiNoGeoreferenciado ini, PoiNoGeoreferenciado _fin) Crea una consulta de camino tipo INI_NOGEO__FIN_NOGEO.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

INI_GEO__FIN_GEO public static final int INI_GEO__FIN_GEO

Indica que el camino tiene como punto inicial y final un punto georeferenciado. Usado en el constructor Camino(int), y en el método EscribeTipoCamino(int)

El valor de INI_GEO__FIN_GEO es 0.

See Also: Constant Field Values

INI_GEO__FIN_NOGEO public static final int INI_GEO__FIN_NOGEO

Indica que el camino tiene como inicio un punto georeferenciado y como fin un punto no georeferenciado. Usado en el constructor Camino(int), y en el método EscribeTipoCamino(int)

El valor de INI_GEO__FIN_NOGEO es 1.

See Also: Constant Field Values

INI_NOGEO__FIN_GEO public static final int INI_NOGEO__FIN_GEO

Indica que el camino tiene como inicio un punto no georeferenciado y como fin un punto georeferenciado. Usado en el constructor Camino(int), y en el método EscribeTipoCamino(int)

El valor de INI_NOGEO__FIN_GEO es 2.

See Also: Constant Field Values

INI_NOGEO__FIN_NOGEO public static final int INI_NOGEO__FIN_NOGEO

Indica que el camino tiene como inicio un punto georeferenciado y como fin un punto no georeferenciado. Usado en el constructor Camino(int), y en el método EscribeTipoCamino(int)

El valor de INI_NOGEO__FIN_NOGEO es 3.

See Also: Constant Field Values

Constructor Detail

Camino public Camino(int tipo) throws java.lang.IllegalArgumentException

Crea una instancia de Camino. Indicando el tipo de consulta de camino. Parameters: tipo – Indica el tipo de consulta de camino. Throws: java.lang.IllegalArgumentException – Si el parámetro recibido no es ninguno de los siguientes valores: INI_GEO__FIN_GEO=0 INI_GEO__FIN_NOGEO=1 INI_NOGEO__FIN_GEO=2 INI_NOGEO__FIN_NOGEO=3

Method Detail

QueryCamino public void QueryCamino(PoiGeoreferenciado ini, PoiGeoreferenciado _fin) throws java.lang.IllegalArgumentException

Crea una consulta de camino tipo INI_GEO__FIN_GEO Parameters: ini – Indica el punto georeferenciado inicial . _fin – Indica el punto georeferenciado final. Throws: java.lang.IllegalArgumentException – Si el tipo de consulta asignado mediante el constructor Camino(int tipo) no coincide con INI_GEO_FIN_GEO.

QueryCamino public void QueryCamino(PoiGeoreferenciado ini, PoiNoGeoreferenciado _fin) throws java.lang.IllegalArgumentException

Crea una consulta de camino tipo INI_GEO__FIN_NOGEO. Parameters: ini – Indica el punto georeferenciado inicial. _fin – Indica el punto georeferenciado final. Throws: java.lang.IllegalArgumentException – Si el tipo de consulta asignado mediante el constructor Camino(int tipo) no coincide con INI_GEO__FIN_NOGEO.

Page 134: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

122

QueryCamino public void QueryCamino(PoiNoGeoreferenciado ini, PoiGeoreferenciado _fin) throws java.lang.IllegalArgumentException

Crea una consulta de camino tipo INI_NOGEO__FIN_GEO. Parameters: ini – Indica el punto no georeferenciado inicial. _fin – Indica el punto georeferenciado final. Throws: java.lang.IllegalArgumentException – Si el tipo de consulta asignado mediante el constructor Camino(int tipo) no coincide con INI_NOGEO__FIN_GEO.

QueryCamino public void QueryCamino(PoiNoGeoreferenciado ini, PoiNoGeoreferenciado _fin) throws java.lang.IllegalArgumentException

Crea una consulta de camino tipo INI_NOGEO__FIN_NOGEO. Parameters: ini – Indica el punto no georeferenciado inicial. _fin – Indica el puno no georeferenciado final. Throws: java.lang.IllegalArgumentException – Si el tipo de consulta asignado mediante el constructor Camino(int tipo) no coincide con INI_NOGEO__FIN_NOGEO.

LeeTipoCamino public int LeeTipoCamino()

Lee el tipo de camino. Returns: El tipo de camino. INI_GEO__FIN_GEO=0 INI_GEO__FIN_NOGEO=1 INI_NOGEO__FIN_GEO=2 INI_NOGEO__FIN_NOGEO=3

LeePuntoNoGeo public PoiNoGeoreferenciado LeePuntoNoGeo(int pos) throws java.lang.IllegalArgumentException

Lee el punto georeferenciado. El parámetro pos indica si se está leyendo el punto inicial o final. Parameters: pos – Si el parámetro recibido es 0 se devolverá el punto inicial. Si es 1 devolverá el punto final. Returns: Retorna el punto georeferenciado en la posición pos del vector que contiene los puntos inicial y final. Throws: java.lang.IllegalArgumentException – Si pos no es 0 ó 1. También se lanza si el dato solicitado no coincide con el tipo de dato contenido en el vector.

LeePuntoGeo public PoiGeoreferenciado LeePuntoGeo(int pos) throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException

Lee el punto no georeferenciado. El parámetro pos indica si se está leyendo el punto inicial o final Parameters: pos – Si el parámetro recibido es 0 se devolverá el punto inicial. Si es 1 devolverá el punto final. Returns: Retorna el punto no georeferenciado en la posición pos del vector que contiene los puntos inicial y final. Throws: java.lang.ArrayIndexOutOfBoundsException – Si se intenta leer cuando no se han insertado elementos por medio del método QueryCamino(). Java.lang.IllegalArgumentException – Si pos no es 0 ó 1. También se lanza si el dato solicitado no coincide con el tipo de dato contenido en el vector.

mx.edu.cenidet.apisms.dato Class Clima

java.lang.Object

mx.edu.cenidet.apisms.dato.Clima

public class Clima extends java.lang.Object

Representa la respuesta a una consulta de clima. Sus atributos son: Temperatura Máxima, Temperatura mínima, Tiempo, Fecha.

Constructor Summary Clima() Crea una instancia de Clima

Method Summary void EscribeFecha(java.lang.String fecha)

Escribe la fecha a la que corresponde la información del clima.

Void EscribeTempMax(java.lang.String maxi) Escribe la temperatura máxima

void EscribeTempMin(java.lang.String min) Escribe la temperatura mínima.

Void EscribeTiempo(java.lang.String forecast) Escribe el tiempo.

Java.lang.String LeeFecha() La fecha en la que son válidos los datos del clima.

Java.lang.String LeeTempMax() Lee la temperatura máxima

Page 135: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

123

java.lang.String LeeTempMin() Lee la temperatura mínima.

Java.lang.String LeeTiempo() Lee las condiciones del tiempo.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Clima public Clima()

Crea una instancia de Clima

Method Detail

EscribeTempMax public void EscribeTempMax(java.lang.String maxi)

Escribe la temperatura máxima Parameters: maxi – Indica la temperatura máxima.

EscribeTempMin public void EscribeTempMin(java.lang.String min)

Escribe la temperatura mínima. Parameters: min – Indica la temperatura mínima.

EscribeTiempo public void EscribeTiempo(java.lang.String forecast)

Escribe el tiempo. Las condiciones del tiempo por ejemplo: nublado, soleado, tormenta, etc. Parameters: forecast – Indica la condición del tiempo.

EscribeFecha public void EscribeFecha(java.lang.String fecha)

Escribe la fecha a la que corresponde la información del clima. Parameters: fecha – Indica la fecha.

LeeTempMax public java.lang.String LeeTempMax()

Lee la temperatura máxima Returns: La temperatura máxima.

LeeTempMin public java.lang.String LeeTempMin()

Lee la temperatura mínima. Returns: La temperatura mínima.

LeeTiempo public java.lang.String LeeTiempo()

Lee las condiciones del tiempo. Returns: Las condiciones del tiempo, pueden ser: caluroso, nublado, etc.

LeeFecha public java.lang.String LeeFecha()

La fecha en la que son válidos los datos del clima. Returns: La fecha.

mx.edu.cenidet.apisms.dato Class Evento

java.lang.Object

mx.edu.cenidet.apisms.dato.Evento

public class Evento extends java.lang.Object

Representa un evento. EL evento tiene un atributo lugar que hace referencia a un objeto de la clase Poi. También tiene atributos de nombre, hora, fecha, tipo de evento.

Constructor Summary Evento() Crea una nueva estancia de Evento

Method Summary void EscribeFecha(java.lang.String fecha)

Escribe la fecha del evento.

Void EscribeHora(java.lang.String hora) Escribe la hora del evento.

Void EscribeLugar(PoiGeoreferenciado lugar) Asigna un punto georeferenciado al atributo lugar

Page 136: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

124

void EscribeLugar(PoiNoGeoreferenciado lugar) Asigna un punto no georeferenciado al atributo lugar.

Void EscribeNombre(java.lang.String nombre) Escribe el nombre del evento

void EscribeTipo(java.lang.String tipo) Escribe el tipo de evento.

Boolean EsGeo() Verifica si el atributo lugar tiene asignado un punto georeferenciado.

Boolean EsNoGeo() Verifica si el atributo lugar tiene asignado un punto no georeferenciado.

Java.lang.String LeeFecha() Lee la fecha del Evento.

Java.lang.String LeeHora() Lee la hora del evento

PoiGeoreferenciado LeeLugarGeo() Lee el punto georeferenciado asignado al atributo lugar.

PoiNoGeoreferenciado LeeLugarNoGeo() Lee el punto no georeferenciado asignado al atributo lugar.

Java.lang.String LeeNombre() Lee el nombre del evento.

Java.lang.String LeeTipo() Lee el tipo de evento.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Evento public Evento()

Crea una nueva estancia de Evento

Method Detail

EscribeTipo public void EscribeTipo(java.lang.String tipo)

Escribe el tipo de evento. Puede ser religioso, político, cultural, etc. Parameters: tipo – tipo de evento. El tipo de evento es una cadena que debe tener uno de los siguientes valores: POLITICO, SOCIAL, CULTURAL, RELIGIOSO, MUSICAL, OTRO, TODOS. Si no se define un tipo de evento, se asigna la cadena “SIN DEFINIR” El método permite escribir una palabra distinta a las anteriores, sin embargo al momento de leer o recibir la trama se lanzará una excepción.

EscribeHora public void EscribeHora(java.lang.String hora)

Escribe la hora del evento. Parameters: hora – hora del evento.

EscribeFecha public void EscribeFecha(java.lang.String fecha)

Escribe la fecha del evento. Parameters: fecha – fecha del evento.

EscribeNombre public void EscribeNombre(java.lang.String nombre)

Escribe el nombre del evento Parameters: nombre – nombre del evento.

EscribeLugar public void EscribeLugar(PoiNoGeoreferenciado lugar)

Asigna un punto no georeferenciado al atributo lugar. Parameters: lugar – punto no georeferenciado.

EscribeLugar public void EscribeLugar(PoiGeoreferenciado lugar)

Asigna un punto georeferenciado al atributo lugar Parameters: lugar – punto georeferenciado.

LeeTipo public java.lang.String LeeTipo()

Lee el tipo de evento. Returns: tipo de evento.

LeeHora public java.lang.String LeeHora()

Lee la hora del evento Returns: hora del evento.

LeeFecha public java.lang.String LeeFecha()

Lee la fecha del Evento. Returns: fecha del evento.

Page 137: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

125

LeeNombre public java.lang.String LeeNombre()

Lee el nombre del evento. Returns: nombre del evento.

LeeLugarGeo public PoiGeoreferenciado LeeLugarGeo() throws java.lang.NullPointerException

Lee el punto georeferenciado asignado al atributo lugar. Returns: el punto georeferenciado Throws: java.lang.NullPointerException – si el evento tiene asignado un punto no georeferenciado en el atributo lugar.

LeeLugarNoGeo public PoiNoGeoreferenciado LeeLugarNoGeo() throws java.lang.NullPointerException

Lee el punto no georeferenciado asignado al atributo lugar. Returns: el punto no georeferenciado. Throws: java.lang.NullPointerException – si el evento tiene asignado un punto no georeferenciado en el atributo lugar.

EsGeo public boolean EsGeo()

Verifica si el atributo lugar tiene asignado un punto georeferenciado. Returns: verdadero si el atributo lugar tiene asignado un punto georeferenciado, falso en caso contrario.

EsNoGeo public boolean EsNoGeo()

Verifica si el atributo lugar tiene asignado un punto no georeferenciado. Returns: verdadero si el atributo lugar tiene asignado un punto no georeferenciado, falso en caso contrario.

mx.edu.cenidet.apisms.dato Class Poi

java.lang.Object

mx.edu.cenidet.apisms.dato.Poi

Direct Known Subclases:

PoiGeoreferenciado, PoiNoGeoreferenciado

public class Poi extends java.lang.Object

Representa un punto de interés. POI por sus siglas en inglés (Poi Of Interest)

Constructor Summary Poi() Crea una nueva instancia de Poi

Method Summary void EscibeClasif(java.lang.String clasif)

Escribe la clasificación del punto de interés.

Void EscibeNombre(java.lang.String nom) Escribe el nombre del punto de interés.

Void EscribeDistancia(java.lang.String dist) Escribe la distancia en metros al punto de interés.

Void EscribeOtro(java.lang.String campo) Escribe un dato adicional del punto de interés.

Java.lang.String LeeClasif() Lee la clasificación del punto de interés.

Java.lang.String LeeDistancia() Lee la distancia.

Java.lang.String LeeNombre() Lee el nombre del punto de interés.

Java.lang.String LeeOtro() Lee el dato adicional del punto de interés.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

Poi public Poi()

Crea una nueva instancia de Poi

Method Detail

Page 138: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

126

EscibeClasif public void EscibeClasif(java.lang.String clasif)

Escribe la clasificación del punto de interés. Especifica si se trata de una ubicación, un evento, un poi relacionado con una respuesta de clima, o un poi que es parte de un camino. Parameters: clasif – La clasificación es una cadena que debe tener uno de los siguientes valores: EVENTO, CLIMA, CAMINO, HOTEL, BANCO, BUS, CINE, HOSPITAL, RESTAURANTE, SMERCADO, TAXI, PASTELERIA, MSUPER, GYM, ESCUELA VIDEO, FARMACIA, TODOS Si no se especifica una clasificación, se asignara la cadena “SIN DEFINIR”. El método permite escribir una palabra distinta a las anteriores, sin embargo al momento de leer o recibir la trama se lanzará una excepción.

EscibeNombre public void EscibeNombre(java.lang.String nom)

Escribe el nombre del punto de interés. Por ejemplo “Palacio de Gobierno”, “cenidet”, “Los girasoles” Parameters: nom – Indica el nombre del punto de interés.

LeeClasif public java.lang.String LeeClasif()

Lee la clasificación del punto de interés. Returns: La clasificación del punto de interés.

LeeNombre public java.lang.String LeeNombre()

Lee el nombre del punto de interés. Returns: una cadena con el nombre del punto de interés.

EscribeDistancia public void EscribeDistancia(java.lang.String dist)

Escribe la distancia en metros al punto de interés. Esta distancia indica el límite del radio de búsqueda en la consulta. Por ejemplo si se define una distancia de 500, la consulta buscará los puntos de interés que estén a 500 metros o menos de la ubicación del cliente móvil. Parameters: dist – La distancia en metros. La distancia es una cadena que debe tener uno de los siguientes valores: 50,100, 150, 200, 250, 300, 350, 400, 450, 500, 1000, 1500, 2000, 2500, 3000 Si no se especifica una clasificación, se asignara la cadena “SIN DEFINIR”. El método permite escribir una palabra distinta a las anteriores, sin embargo al momento de leer o recibir la trama se lanzará una excepción.

LeeDistancia public java.lang.String LeeDistancia()

Lee la distancia. Esta distancia indica el límite del radio de búsqueda en la consulta. Returns: La distancia.

EscribeOtro public void EscribeOtro(java.lang.String campo)

Escribe un dato adicional del punto de interés. Este dato adicional podría ser por ejemplo si se trata de un restaurante, el tipo de comida que vende. Parameters: campo – dato adicional.

LeeOtro public java.lang.String LeeOtro()

Lee el dato adicional del punto de interés. Returns: dato adicional.

mx.edu.cenidet.apisms.dato Class PoiGeoreferenciado

java.lang.Object

mx.edu.cenidet.apisms.dato.Poi

mx.edu.cenidet.apisms.dato.PoiGeoreferenciado

public class PoiGeoreferenciado extends Poi

Representa un punto de interés georeferenciado. Su ubicación está dada por Latitud, Longitud. Ejemplo: 16.2581337,-99.2415861

Constructor Summary PoiGeoreferenciado() Crea una nueva instancia de PoiGeoreferenciado

Method Summary void EscribeLatitudG(java.lang.String lati)

Escribe la latitud del punto de interés expresada en grados.

Void EscribeLongitudG(java.lang.String longi) Escribe la longitud del punto de interés expresada en grados.

Java.lang.String LeeLatitudG() Lee la latitud del punto de interés expresada en grados.

Java.lang.String LeeLongitudG()

Page 139: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

127

Lee la longitud del punto de interés expresada en grados.

Methods inherited from class mx.edu.cenidet.apisms.dato.Poi

EscibeClasif, EscibeNombre, EscribeDistancia, EscribeOtro, LeeClasif, LeeDistancia, LeeNombre, LeeOtro

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

PoiGeoreferenciado public PoiGeoreferenciado()

Crea una nueva instancia de PoiGeoreferenciado

Method Detail

EscribeLongitudG public void EscribeLongitudG(java.lang.String longi)

Escribe la longitud del punto de interés expresada en grados. Parameters: longi – longitud

EscribeLatitudG public void EscribeLatitudG(java.lang.String lati)

Escribe la latitud del punto de interés expresada en grados. Parameters: lati – latitud en grados.

LeeLatitudG public java.lang.String LeeLatitudG()

Lee la latitud del punto de interés expresada en grados. Returns: latitud.

LeeLongitudG public java.lang.String LeeLongitudG()

Lee la longitud del punto de interés expresada en grados. Returns: Longitud.

mx.edu.cenidet.apisms.dato Class PoiNoGeoreferenciado

java.lang.Object

mx.edu.cenidet.apisms.dato.Poi

mx.edu.cenidet.apisms.dato.PoiNoGeoreferenciado

public class PoiNoGeoreferenciado extends Poi

Representa un punto de interés no georeferenciado. Su ubicación está dada por Número, Calle, Colonia, Código Postal, Localidad(Ciudad), Municipio, Estado, País. Ejemplo: Av. 5 de Septiembre No 10, Colonia Venustiano Carranza, CP:70000, La Ventosa, Juchitán de Zaragoza, Oaxaca, México. Av. Estado de Puebla No 71c Colonia Lázaro Cárdenas Cuernavaca.

Constructor Summary PoiNoGeoreferenciado() Crea una nueva instancia de PoiNoGeoreferenciado.

Method Summary void EscribeCalle(java.lang.String nomcalle)

Asigna el nombre de la calle al punto de interés. Void EscribeColonia(java.lang.String col)

Asigna el nombre de la colonia al punto de interés. Void EscribeCP(java.lang.String codigo)

Asigna el código postal al punto de interés. Void EscribeEstado(java.lang.String edo)

Asigna el nombre del estado al punto de interés. Void EscribeLocalidad(java.lang.String local)

Escribe la Localidad. Void EscribeMunicipio(java.lang.String municipio)

Asigna el nombre del municipio al punto de interés. Void EscribeNum(java.lang.String num)

Asigna el numero de la calle al punto de interés. Void EscribePais(java.lang.String nacion)

Asigna el nombre del país al punto de interés. Java.lang.String LeeCalle()

Lee el nombre de la calle del punto de interés. Java.lang.String LeeColonia()

Lee el nombre de la colonia del punto de interés. Java.lang.String LeeCP()

Page 140: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

128

Lee el código postal del punto de interés. Java.lang.String LeeEstado()

Lee el nombre del estado del punto de interés. Java.lang.String LeeLocalidad()

Lee el nombre de la localidad del punto de interés. Java.lang.String LeeMunicipio()

Lee el nombre del municipio del punto de interés. Java.lang.String LeeNum()

Lee el número de la calle del punto de interés. Java.lang.String LeePais()

Lee el nombre del país del punto de interés. Methods inherited from class mx.edu.cenidet.apisms.dato.Poi

EscibeClasif, EscibeNombre, EscribeDistancia, EscribeOtro, LeeClasif, LeeDistancia, LeeNombre, LeeOtro Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

PoiNoGeoreferenciado public PoiNoGeoreferenciado()

Crea una nueva instancia de PoiNoGeoreferenciado.

Method Detail

EscribeCalle public void EscribeCalle(java.lang.String nomcalle)

Asigna el nombre de la calle al punto de interés. Parameters: nomcalle – el nombre de la calle

EscribeNum public void EscribeNum(java.lang.String num)

Asigna el número de la calle al punto de interés. Parameters: num – el número de la calle.

EscribeColonia public void EscribeColonia(java.lang.String col)

Asigna el nombre de la colonia al punto de interés. Parameters: col – el nombre de la colonia.

EscribeCP public void EscribeCP(java.lang.String codigo)

Asigna el código postal al punto de interés. Parameters: codigo – el código postal

EscribeLocalidad public void EscribeLocalidad(java.lang.String local)

Escribe la Localidad. Para el caso del Distrito Federal se puede utilizar como Delegación. Parameters: local – La localidad

EscribeMunicipio public void EscribeMunicipio(java.lang.String municipio)

Asigna el nombre del municipio al punto de interés. En el caso del DF puede utilizarse como Delegación. Parameters: municipio– El nombre del municipio.

EscribeEstado public void EscribeEstado(java.lang.String edo)

Asigna el nombre del estado al punto de interés. Parameters: edo – el estado

EscribePais public void EscribePais(java.lang.String nacion)

Asigna el nombre del país al punto de interés. Parameters: nacion – El nombre del país.

LeeCalle public java.lang.String LeeCalle()

Lee el nombre de la calle del punto de interés. Returns: el nombre de la calle

LeeNum public java.lang.String LeeNum()

Lee el número de la calle del punto de interés. Returns: el número de la calle

Page 141: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

129

LeeColonia public java.lang.String LeeColonia()

Lee el nombre de la colonia del punto de interés. Returns: el nombre de la colonia

LeeCP public java.lang.String LeeCP()

Lee el código postal del punto de interés. Returns: código postal

LeeLocalidad public java.lang.String LeeLocalidad()

Lee el nombre de la localidad del punto de interés. Returns: la localidad

LeeMunicipio public java.lang.String LeeMunicipio()

Lee el nombre del municipio del punto de interés. Returns: el nombre del municipio

LeeEstado public java.lang.String LeeEstado()

Lee el nombre del estado del punto de interés. Returns: el nombre del estado

LeePais public java.lang.String LeePais()

Lee el nombre del país del punto de interés. Returns: el nombre del país.

Package mx.edu.cenidet.apisms.trama

Class Summary Cadena Clase de uso exclusivo de la clase Mensaje.

Diccionario Clase de uso exclusivo de la clase Mensaje.

Mensaje Representa el mensaje a enviar.

Exception Summary

MensajeExcepcion Esta Excepción se lanza cuando ocurre un error al momento de insertar o leer datos al mensaje.

mx.edu.cenidet.apisms.trama Class Mensaje

java.lang.Object

mx.edu.cenidet.apisms.trama.Mensaje

public class Mensaje extends java.lang.Object

Representa el mensaje a enviar. El programador inserta información al mensaje con el método AgregaInfo(). Cuando se trata de una consulta sólo se puede agregar un dato(PoiGeoreferenciado, PoiNoGeoreferenciado, Clima, Evento, Camino). Si es una respuesta se pueden agregar varios datos(PoiGeoreferenciado, PoiNoGeoreferenciado, Clima, Evento, Camino) pero todos los datos agregados deben ser del mismo tipo. Forma la trama a enviar con el método LeeTrama(). Recibe la trama con el método RecibeTrama(). El programador debe especificar el tipo de trama, existen 16 tramas que se describen a continuación: Q_GEO_UBICACION: Consulta de sitios de interés cercanos, la ubicación del dispositivo móvil es un punto georeferenciado. Q_CAMINO_GEO_GEO: Consulta de un camino donde el inicio y el fin es un punto georeferenciado. Q_CAMINO_GEO_NOGEO: Consulta de un camino donde el inicio es un punto georeferenciado y el fin es un punto no georeferenciado. Q_GEO_EVENTO: Consulta de Eventos cercanos, la ubicación del dispositivo móvil es un punto georeferenciado. Q_GEO_CLIMA: Consulta del clima, la ubicación del dispositivo móvil es un punto georeferenciado. Q_NOGEO_UBICACION: Consulta de sitios de interés cercanos, la ubicación del dispositivo móvil es un punto no georeferenciado. Q_CAMINO_NOGEO_GEO: Consulta de un camino donde el inicio es un punto no georeferenciado y el fin es un punto georeferenciado. Q_CAMINO_NOGEO_NOGEO: Consulta de un camino donde el inicio y el fin es un punto no georeferenciado. Q_NOGEO_EVENTO: Consulta de Eventos cercanos, la ubicación del dispositivo móvil es un punto no georeferenciado. Q_NOGEO_CLIMA: Consulta del clima, la ubicación del dispositivo móvil es un punto no georeferenciado que indica la ciudad, el estado y el país. R_GEO_UBICACION: Respuesta con sitios de interés cuya ubicación es punto georeferenciado. R_GEO_CAMINO: Respuesta de un camino. Es una sucesión de puntos georeferenciados. R_GEO_EVENTO: Respuesta de Eventos cercanos, la ubicación es un punto georeferenciado R_CLIMA: Respuesta de clima. R_NOGEO_UBICACION: Respuesta con sitios de interés cuya ubicación es punto no georeferenciado. R_NOGEO_EVENTO: Respuesta de Eventos cercanos, la ubicación es un punto no georeferenciado. En el mensaje de consulta se especifica el numero de respuestas deseadas con el método EscribeNumero(). Cuando se trata de un mensaje de respuesta el mismo método especifica el número total de respuestas.

Page 142: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

130

En el mensaje se pueden especificar también parámetros extras con los métodos EscribeElemExtra(), EscribeExtra(). Se pueden agregar varios elementos extra, independientemente de si es una consulta o una respuesta.

Field Summary static int Q_CAMINO_GEO_GEO

Indica que es una trama de consulta de camino donde el inicio y el fin es un punto georeferenciado.

Static int Q_CAMINO_GEO_NOGEO Indica que es una trama de consulta de un camino donde el inicio es un punto georeferenciado y el fin es un punto no georeferenciado.

Static int Q_CAMINO_NOGEO_GEO Indica que es una trama de consulta de un camino donde el inicio es un punto no georeferenciado y el fin es un punto georeferenciado.

Static int Q_CAMINO_NOGEO_NOGEO Indica que es un trama de consulta de un camino donde el inicio y el fin es un punto no georeferenciado.

Static int Q_GEO_CLIMA Indica que es una trama de consulta georeferenciada de clima.

Static int Q_GEO_EVENTO Indica que es una trama de consulta georeferenciada de Eventos cercanos.

Static int Q_GEO_UBICACION Indica que es una trama de consulta georeferenciada para solicitar puntos de interés.

Static int Q_NOGEO_CLIMA Indica que es una trama de consulta no georeferenciada de clima, la ubicación se indica por la ciudad, el estado y el país.

Static int Q_NOGEO_EVENTO Indica que es una trama de consulta no georeferenciada de Eventos cercanos.

Static int Q_NOGEO_UBICACION Indica que es una trama de consulta no georefenciada de sitios de interés cercanos El valor de Q_NOGEO_UBICACION es 5.

Static int R_CLIMA Indica que es una trama de respuesta de clima.

Static int R_GEO_CAMINO Indica que es una trama de respuesta de un camino.

Static int R_GEO_EVENTO Indica que es una trama de respuesta georeferenciada de Eventos cercanos.

Static int R_GEO_UBICACION Indica que es una trama de Respuesta con sitios de interés cuya ubicación es punto georeferenciado.

Static int R_NOGEO_EVENTO Indica que es una respuesta no georeferenciada de Eventos cercanos.

Static int R_NOGEO_UBICACION

Indica que es una respuesta no georefenciada de sitios de interés.

Constructor Summary Mensaje() Crea una nueva instancia de Mensaje, sin indicar el tipo de trama.

Mensaje(int tipo) Crea una nueva instancia de Mensaje indicando el tipo de trama.

Method Summary void AgregaInfo(Camino tramo)

Agrega un dato de tipo consulta camino al mensaje. Void AgregaInfo(Clima tiempo)

Agrega un dato de tipo clima al mensaje. Void AgregaInfo(Evento even)

Agrega un Evento al mensaje. Void AgregaInfo(PoiGeoreferenciado geo)

Agrega un punto georeferenciado al mensaje. Void AgregaInfo(PoiNoGeoreferenciado nogeo)

Agrega un punto no georeferenciado al mensaje void EscribeElemExtra(java.lang.String elem)

Escribe un dato extra. Void EscribeExtra(java.util.Vector vector)

Asigna el contenido del vector recibido a el vector de los datos extra del mensaje.

Void EscribeNumero(int num) Asigna un valor al Atributo Número.

Boolean ExisteExtra() Verifica si existen datos extra.

Clima LeeClimaSiguiente() Lee el siguiente dato Clima.

Evento LeeEventoSiguiente() Lee el siguiente dato Evento.

Java.util.Vector LeeExtra() Lee el vector completo que contiene todos los datos extra.

Java.lang.String LeeExtraSiguiente() Lee el dato extra siguiente

PoiGeoreferenciado LeeGeoSiguiente() Lee el siguiente dato PoiGeoreferenciado.

PoiNoGeoreferenciado LeeNoGeoSiguiente() Lee el siguiente dato PoiNoGeoreferenciado.

Int LeeNumero() Lee el atributo número asignado al Mensaje.

Camino LeeQcamino() Lee el siguiente dato Camino.

Page 143: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

131

Int LeeTipoObjeto() Indica el tipo de dato(PoiGeoreferenciado, PoiNoGeoreferenciado, Evento, Clima, Camino) que contiene el mensaje.

Int LeeTipoTrama() Lee el tipo de trama.

Java.lang.String LeeTrama() Forma la trama y la regresa en una cadena.

Void RecibeTrama(java.lang.String trama) Recibe la trama.

Int tamano() Indica el número de datos que contiene el Mensaje.

Methods inherited from class java.lang.Object equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

Q_GEO_UBICACION public static final int Q_GEO_UBICACION

Indica que es una trama de consulta georeferenciada para solicitar puntos de interés. El valor de Q_GEO_UBICACION es 0 See Also: Constant Field Values

Q_CAMINO_GEO_GEO public static final int Q_CAMINO_GEO_GEO

Indica que es una trama de consulta de camino donde el inicio y el fin es un punto georeferenciado. El valor de Q_CAMINO_GEO_GEO es 1. See Also: Constant Field Values

Q_CAMINO_GEO_NOGEO public static final int Q_CAMINO_GEO_NOGEO

Indica que es una trama de consulta de un camino donde el inicio es un punto georeferenciado y el fin es un punto no georeferenciado. El valor de Q_CAMINO_GEO_NOGEO es 2. See Also: Constant Field Values

Q_GEO_EVENTO public static final int Q_GEO_EVENTO

Indica que es una trama de consulta georeferenciada de Eventos cercanos. El valor de Q_GEO_EVENTO es 3. See Also: Constant Field Values

Q_GEO_CLIMA public static final int Q_GEO_CLIMA

Indica que es una trama de consulta georeferenciada de clima. El valor de Q_GEO_CLIMA es 4. See Also: Constant Field Values

Q_NOGEO_UBICACION public static final int Q_NOGEO_UBICACION

Indica que es una trama de consulta no georefenciada de sitios de interés cercanos El valor de Q_NOGEO_UBICACION es 5. See Also: Constant Field Values

Q_CAMINO_NOGEO_GEO public static final int Q_CAMINO_NOGEO_GEO

Indica que es una trama de consulta de un camino donde el inicio es un punto no georeferenciado y el fin es un punto georeferenciado. El valor de Q_CAMINO_NOGEO_GEO es 6. See Also: Constant Field Values

Q_CAMINO_NOGEO_NOGEO public static final int Q_CAMINO_NOGEO_NOGEO

Indica que es una trama de consulta de un camino donde el inicio y el fin es un punto no georeferenciado. El valor de Q_CAMINO_NOGEO_NOGEO es 7. See Also: Constant Field Values

Q_NOGEO_EVENTO public static final int Q_NOGEO_EVENTO

Indica que es una trama de consulta no georeferenciada de Eventos cercanos. El valor de Q_NOGEO_EVENTO es 8. See Also: Constant Field Values

Q_NOGEO_CLIMA public static final int Q_NOGEO_CLIMA

Indica que es una trama de consulta no georeferenciada de clima, la ubicación se indica por la ciudad, el estado y el país. EL valor de Q_NOGEO_CLIMA es 9. See Also: Constant Field Values

R_GEO_UBICACION public static final int R_GEO_UBICACION

Page 144: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

132

Indica que es una trama de Respuesta con sitios de interés cuya ubicación es punto georeferenciado. El valor de R_GEO_UBICACION es 10. See Also: Constant Field Values

R_GEO_CAMINO public static final int R_GEO_CAMINO

Indica que es una trama de respuesta de un camino. Es una sucesión de puntos georeferenciados. EL valor de R_GEO_CAMINO es 11. See Also: Constant Field Values

R_GEO_EVENTO public static final int R_GEO_EVENTO

Indica que es una trama de respuesta georeferenciada de Eventos cercanos. El valor de R_GEO_EVENTO es 12. See Also: Constant Field Values

R_CLIMA public static final int R_CLIMA

Indica que es una trama de respuesta de clima. El valor de R_CLIMA es 13. See Also: Constant Field Values

R_NOGEO_UBICACION public static final int R_NOGEO_UBICACION

Indica que es una respuesta no georefenciada de sitios de interés. El valor de R_NOGEO_UBICACION es 14. See Also: Constant Field Values

R_NOGEO_EVENTO public static final int R_NOGEO_EVENTO

Indica que es una respuesta no georeferenciada de Eventos cercanos. El valor de R_NOGEO_EVENTO es 15 See Also: Constant Field Values

Constructor Detail

Mensaje public Mensaje(int tipo) throws java.lang.IllegalArgumentException

Crea una nueva instancia de Mensaje indicando el tipo de trama. Parameters:

tipo – tipo de trama. Throws: java.lang.IllegalArgumentException – Si tipo no tiene asignado ninguno de los valores: Q_GEO_UBICACION, Q_CAMINO_GEO_GEO, Q_CAMINO_GEO_NOGEO, Q_GEO_EVENTO, Q_GEO_CLIMA, Q_NOGEO_UBICACION, Q_CAMINO_NOGEO_GEO, Q_CAMINO_NOGEO_NOGEO, Q_NOGEO_EVENTO, Q_NOGEO_CLIMA, R_GEO_UBICACION, R_GEO_CAMINO, R_GEO_EVENTO, R_CLIMA, R_NOGEO_UBICACION, R_NOGEO_EVENTO.

Mensaje public Mensaje()

Crea una nueva instancia de Mensaje, sin indicar el tipo de trama.

Method Detail

AgregaInfo public void AgregaInfo(PoiNoGeoreferenciado nogeo) throws java.lang.IllegalArgumentException

Agrega un punto no georeferenciado al mensaje Parameters: nogeo – punto no georeferenciado a insertar. Throws: java.lang.IllegalArgumentException – Si el tipo de trama no es uno de los siguientes: Q_NOGEO_UBICACION Q_NOGEO_CLIMA R_NOGEO_UBICACION

AgregaInfo public void AgregaInfo(PoiGeoreferenciado geo) throws java.lang.IllegalArgumentException

Agrega un punto georeferenciado al mensaje. Parameters: geo – punto georeferenciado a insertar. Throws: java.lang.IllegalArgumentException – Si el tipo de trama no es alguno de los siguientes: Q_GEO_UBICACION. Q_GEO_CLIMA. R_GEO_UBICACION. R_GEO_CAMINO.

AgregaInfo public void AgregaInfo(Evento even) throws java.lang.IllegalArgumentException

Agrega un Evento al mensaje. Parameters: even – Evento a insertar. Throws:

Page 145: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

133

java.lang.IllegalArgumentException – Si el tipo de trama no es de ninguno de los siguientes tipos: Q_GEO_EVENTO Q_NOGEO_EVENTO R_GEO_EVENTO R_NOGEO_EVENTO.

AgregaInfo public void AgregaInfo(Clima tiempo) throws java.lang.IllegalArgumentException

Agrega un dato de tipo clima al mensaje. Parameters: tiempo – es el dato tipo clima a insertar. Throws: java.lang.IllegalArgumentException – Si el tipo de la trama no es R_CLIMA.

AgregaInfo public void AgregaInfo(Camino tramo) throws java.lang.IllegalArgumentException

Agrega un dato de tipo consulta camino al mensaje. Parameters: tramo – dato tipo camino a insertar Throws: java.lang.IllegalArgumentException – Si el tipo de trama no es ninguno de los siguientes: Q_CAMINO_GEO_GEO Q_CAMINO_GEO_NOGEO Q_CAMINO_NOGEO_GEO Q_CAMINO_NOGEO_NOGEO

LeeTrama public java.lang.String LeeTrama() throws MensajeExcepcion

Forma la trama y la regresa en una cadena. La trama la forma a partir de el tipo de trama, los datos agregados con el método AgregaInfo(), el número de respuestas deseadas si se trata de una consulta o totales si es una respuesta, los atributos extra. Returns: La trama con la consulta o respuesta. Throws: MensajeExcepcion – Si se intenta formar la trama cuando no se han insertado datos.

RecibeTrama public void RecibeTrama(java.lang.String trama) throws MensajeExcepcion

Recibe la trama. A partir de la trama asigna los atributos a los tipos de datos correspondientes para su posterior lectura. Parameters: trama – la trama que se recibe Throws: MensajeExcepcion – Si la trama recibida no se puede interpretar.

LeeTipoObjeto public int LeeTipoObjeto()

Indica el tipo de dato(PoiGeoreferenciado, PoiNoGeoreferenciado, Evento, Clima, Camino) que contiene el mensaje. Dependiendo del tipo de dato, el programador podrá seleccionar el método para leer la información. LeeGeoSiguiente(), LeeNoGeoSiguiente(), LeeEventoSiguiente(), LeeClimaSiguiente(), LeeQcamino() Returns: 1 si es un PuntoGeoreferenciado 2 si es un PuntoNoGeoreferenciado 3 si es un Evento 4 si es un Clima 5 si es una consulta de camino.

LeeTipoTrama public int LeeTipoTrama()

Lee el tipo de trama. Returns: tipo de trama.

LeeGeoSiguiente public PoiGeoreferenciado LeeGeoSiguiente() throws java.lang.ClassCastException, java.lang.ArrayIndexOutOfBoundsException

Lee el siguiente dato PoiGeoreferenciado. Returns: el dato PoiGeoreferenciado. Throws: java.lang.ClassCastException – si PoiGeoreferenciado no coincide con el tipo de dato contenido en el mensaje. Java.lang.ArrayIndexOutOfBoundsException – Si Mensaje no tiene datos, o si ya se han leído todos.

LeeNoGeoSiguiente public PoiNoGeoreferenciado LeeNoGeoSiguiente() throws java.lang.ClassCastException, java.lang.ArrayIndexOutOfBoundsException

Lee el siguiente dato PoiNoGeoreferenciado. Returns: el dato PoiNoGeoreferenciado. Throws: java.lang.ClassCastException – si PoiNoGeoreferenciado no coincide con el tipo de dato contenido en el mensaje. Java.lang.ArrayIndexOutOfBoundsException – Si Mensaje no tiene datos, o si ya se han leído todos.

LeeEventoSiguiente public Evento LeeEventoSiguiente() throws java.lang.ClassCastException, java.lang.ArrayIndexOutOfBoundsException

Lee el siguiente dato Evento. Returns:

Page 146: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

134

el dato Evento. Throws: java.lang.ClassCastException – si Evento no coincide con el tipo de dato contenido en el mensaje. Java.lang.ArrayIndexOutOfBoundsException – Si Mensaje no tiene datos, o si ya se han leído todos.

LeeClimaSiguiente public Clima LeeClimaSiguiente() throws java.lang.ClassCastException, java.lang.ArrayIndexOutOfBoundsException

Lee el siguiente dato Clima. Returns: el dato Clima. Throws: java.lang.ClassCastException – si Clima no coincide con el tipo de dato contenido en el mensaje. Java.lang.ArrayIndexOutOfBoundsException – Si Mensaje no tiene datos, o si ya se han leído todos.

LeeQcamino public Camino LeeQcamino() throws java.lang.ClassCastException, java.lang.ArrayIndexOutOfBoundsException

Lee el siguiente dato Camino. Returns: el dato Camino. Throws: java.lang.ClassCastException – si Camino no coincide con el tipo de dato contenido en el mensaje. Java.lang.ArrayIndexOutOfBoundsException – Si Mensaje no tiene datos, o si ya se han leído todos.

tamano public int tamano()

Indica el número de datos que contiene el Mensaje. Returns: Número de datos.

LeeNumero public int LeeNumero()

Lee el atributo número asignado al Mensaje. En consultas representa el número de respuestas solicitadas. En respuestas representa el total de respuestas. Returns: Atributo Número.

EscribeNumero public void EscribeNumero(int num)

Asigna un valor al Atributo Número. Parameters:

num – atributo número.

LeeExtraSiguiente public java.lang.String LeeExtraSiguiente() throws java.lang.ArrayIndexOutOfBoundsException

Lee el dato extra siguiente Returns: una cadena con el dato extra. Throws: java.lang.ArrayIndexOutOfBoundsException – Si Mensaje no tiene datos extra, o si ya se han leído todos.

EscribeElemExtra public void EscribeElemExtra(java.lang.String elem)

Escribe un dato extra. Parameters: elem – cadena con el dato extra del mensaje.

LeeExtra public java.util.Vector LeeExtra()

Lee el vector completo que contiene todos los datos extra. Returns: un vector con los datos extra.

EscribeExtra public void EscribeExtra(java.util.Vector vector)

Asigna el contenido del vector recibido al vector de los datos extra del mensaje. Parameters: vector – vector con los datos extra.

ExisteExtra public boolean ExisteExtra()

Verifica si existen datos extra. Returns: Verdadero si existen datos extra, falso en caso contrario.

Page 147: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo A Documentación de la API

135

Constant Field Values

Contents

• mx.edu.*

mx.edu.*

mx.edu.cenidet.apisms.dato.Camino public static final int INI_GEO__FIN_GEO 0

public static final int INI_GEO__FIN_NOGEO 1

public static final int INI_NOGEO__FIN_GEO 2

public static final int INI_NOGEO__FIN_NOGEO 3

mx.edu.cenidet.apisms.trama.Mensaje public static final int Q_CAMINO_GEO_GEO 1

public static final int Q_CAMINO_GEO_NOGEO 2

public static final int Q_CAMINO_NOGEO_GEO 6

public static final int Q_CAMINO_NOGEO_NOGEO 7

public static final int Q_GEO_CLIMA 4

public static final int Q_GEO_EVENTO 3

public static final int Q_GEO_UBICACION 0

public static final int Q_NOGEO_CLIMA 9

public static final int Q_NOGEO_EVENTO 8

public static final int Q_NOGEO_UBICACION 5

public static final int R_CLIMA 13

public static final int R_GEO_CAMINO 11

public static final int R_GEO_EVENTO 12

public static final int R_GEO_UBICACION 10

public static final int R_NOGEO_EVENTO 15

public static final int R_NOGEO_UBICACION 14

Page 148: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

136

ANEXO B CODIGO DE APLICACIONES DE PRUEBA

B.1 Código de los casos de prueba APISMSLBS-101-001, APISMSLBS-101-002, APISMSLBS-201-002

Page 149: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

137

Page 150: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

138

B.2 Código de la aplicación receptora de las tramas.

Page 151: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

139

Page 152: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

140

Page 153: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

141

B.3 Código del caso de prueba APISMSLBS-201-002

Page 154: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

142

B.4 Código del caso de prueba APISMSLBS-201-003

B.5 Código del caso de prueba APISMSLBS-201-004

Page 155: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

143

B.6 Código del caso de prueba APISMSLBS-201-005

B.7 Código del caso de prueba APISMSLBS-201-006

Page 156: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

144

B.8 Código del caso de prueba APISMSLBS-201-007

B.9 Código del caso de prueba APISMSLBS-201-008

Page 157: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

145

B.10 Código del caso de prueba APISMSLBS-201-009

B.11 Código del caso de prueba APISMSLBS-201-010

Page 158: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

146

B.12 Código del caso de prueba APISMSLBS-201-011

Page 159: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

147

B.13 Código del caso de prueba APISMSLBS-201-012

B.14 Código del caso de prueba APISMSLBS-201-013

Page 160: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo B Código de aplicaciones de prueba

148

B.15 Código del caso de prueba APISMSLBS-201-014

B.16 Código del caso de prueba APISMSLBS-201-015

Page 161: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo C Dispositivos móviles con MIDP 2.0

149

ANEXO C DISPOSITIVOS MOVILES CON MIDP 2.0

Marca Modelo Red Pantalla BenQ C81 GSM 132x176/18 bits BenQ CX75 GSM 132x176/18 bits BenQ EF81 240x320/18 bits BenQ EF91 GSM 240x320/18 bits BenQ M75 GSM 132x176/18 bits BenQ S65 GSM 132x176/16 bits BenQ S68 GSM 132x176/18 bits BenQ S75 GSM 132x176/18 bits BenQ S81 GSM 176x220/18 bits BenQ SK65 GSM 132x176/16 bits BenQ SL75 GSM 132x176/18 bits BenQ SXG75 GSM 240x320/18 bits

Motorola A1000 GSM 208x320/16 bits Motorola i580 176x220/12 bits Motorola i605 176x220/16 bits Motorola i870 176x220/16 bits Motorola i875 176x220/16 bits Motorola i880 / i885 176x220/16 bits Motorola M1000 GSM/GPRS 208x320/12 bits Motorola RAZR V3x GSM/GPRS, W-CDMA 240x320/18 bits Motorola V80 GSM/GPRS 176x220/12 bits

Nokia 3230 GSM 176x208/16 bits Nokia 3250 GSM/GPRS/EDGE 176x208/18 bits Nokia 5200 GSM 128x160/18 bits Nokia 5300 GSM 240x320/18 bits Nokia 6021 GSM 128x128/16 bits Nokia 6085 GSM 128x160/18 bits Nokia 6086 GSM 128x160/18 bits Nokia 6125 GSM 128x160/18 bits Nokia 6126 GSM 240x320/24 bits Nokia 6131 GSM 240x320/18 bits Nokia 6131 NFC GSM 240x320/24 bits Nokia 6136 GSM 128x160/18 bits Nokia 6151 GSM, W-CDMA 128x160/18 bits Nokia 6230 E-GSM, GSM 128x128/16 bits Nokia 6230i GSM 208x208/16 bits Nokia 6233 GSM, W-CDMA 240x320/24 bits Nokia 6234 GSM, W-CDMA 240x320/24 bits Nokia 6255 AMPS, CDMA 128x160/16 bits Nokia 6260 GSM 176x208/16 bits Nokia 6265 AMPS, CDMA 240x320/18 bits Nokia 6270 GSM 320x240/18 bits Nokia 6275 AMPS, CDMA 240x320/18 bits Nokia 6280 GSM 320x240/18 bits Nokia 6282 GSM 320x240/18 bits Nokia 6290 GSM, W-CDMA 240x320/24 bits Nokia 6300 GSM 240x320/24 bits Nokia 6600 GSM 176x208/16 bits Nokia 6620 GSM 176x208/16 bits Nokia 6630 GSM, W-CDMA 176x208/16 bits Nokia 6670 GSM 176x208/16 bits Nokia 6680 GSM, W-CDMA 176x208/18 bits Nokia 6681 GSM 176x208/18 bits Nokia 6682 GSM, W-CDMA 176x208/18 bits Nokia 7370 GSM 240x320/18 bits Nokia 7373 GSM 240x320/18 bits Nokia 7390 GSM, W-CDMA 240x320/18 bits Nokia 7610 GSM 176x208/16 bits

Page 162: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo C Dispositivos móviles con MIDP 2.0

150

Nokia 8800 GSM 208x208/18 bits

Nokia 8800 Sirocco Edition GSM 208x208/18 bits

Nokia 8801 GSM 208x208/18 bits Nokia 9300i GSM 640x200/16 bits Nokia 9500 GSM, GSM/GPRS 640x200/16 bits Nokia E60 GSM 352x416/24 bits Nokia E61 GSM 320x240/24 bits Nokia E62 GSM 320x240/24 bits Nokia E70 GSM 352x416/18 bits Nokia N70 GSM 176x208/18 bits Nokia N71 GSM 320x240/18 bits

Nokia N76 GSM/GPRS/EDGE, W-CDMA 128x160/18 bits

Nokia N80 GSM, W-CDMA 352x416/18 bits Nokia N91 GSM, W-CDMA 176x208/18 bits

Nokia N93 GSM/GPRS/EDGE, W-CDMA 240x320/18 bits

Nokia N95 GSM, W-CDMA 320x240/24 bits Samsung SGH-D720/D730 176x208/16 bits Siemens CF75 GSM/GPRS 128x160/18 bits Siemens CX75 GSM/GPRS 132x176 Siemens S65 GSM/GPRS 132x176/16 bits Siemens S6C GSM/GPRS 132x176/16 bits Siemens S6V GSM/GPRS 132x176/16 bits Siemens SK65 GSM/GPRS 132x176/16 bits

Sony Ericsson D750i GSM 176x220/18 bits Sony Ericsson K550 GSM/GPRS/EDGE 176x220/18 bits Sony Ericsson K600 GSM/GPRS 176x220/18 bits Sony Ericsson K608 GSM/GPRS 176x220/18 bits Sony Ericsson K610 GSM/GPRS 176x220/18 bits Sony Ericsson K618 GSM/GPRS 176x220/18 bits Sony Ericsson K750 GSM 176x220/18 bits Sony Ericsson K790 GSM/GPRS/EDGE 320x420/18 bits Sony Ericsson K800 GSM/GPRS 320x420/18 bits Sony Ericsson M600 GSM/GPRS 240x320/18 bits Sony Ericsson P900 GSM/GPRS 208x320/16 bits Sony Ericsson P908 GSM/GPRS 208x320/16 bits Sony Ericsson P910i GSM 208x320/18 bits Sony Ericsson P990 GSM/GPRS 240x320/18 bits Sony Ericsson V600 GSM/GPRS 176x220/18 bits Sony Ericsson W300 GSM/GPRS/EDGE 128x160/18 bits Sony Ericsson W550 GSM/GPRS 176x220/18 bits Sony Ericsson W600 GSM/GPRS/EDGE 176x220/18 bits Sony Ericsson W700 GSM/GPRS 176x220/18 bits Sony Ericsson W710 GSM/GPRS/EDGE 176x220/18 bits Sony Ericsson W800 GSM 176x220/18 bits Sony Ericsson W810 GSM/GPRS/EDGE 176x220/18 bits Sony Ericsson W850 GSM/GPRS 320x240/18 bits Sony Ericsson W880i, W888c E-GSM, GSM 240x320/18 bits Sony Ericsson W900 GSM/GPRS 240x320/18 bits

Sony Ericsson W910i, W908c GSM/GPRS,

GSM/GPRS/EDGE, UMTS/HSDPA

240x320/18 bits

Sony Ericsson W950 GSM/GPRS 240x320/18 bits Sony Ericsson Z500 GSM/GPRS 176x220/18 bits Sony Ericsson Z520 GSM/GPRS 128x160/16 bits Sony Ericsson Z525 GSM/GPRS 128x160/16 bits Sony Ericsson Z530 GSM/GPRS 128x160/16 bits Sony Ericsson Z550 GSM/GPRS 176x220/18 bits Sony Ericsson Z610 GSM 176x220/18 bits Sony Ericsson Z750 GSM/GPRS/EDGE 320x240/18 bits

Lista obtenida de [dmidp2]

Page 163: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

151

ANEXO D PLAN DE PRUEBAS APISMSLBS Descripción del identificador: API: Application Programming Interface SMS: Short Message Service. LBS: Location Based Services.

Introducción Este documento define el plan de pruebas basado en el estándar IEEE 829 para pruebas de software, que permitirá verificar la funcionalidad de la APISMSLBS que es una herramienta para el desarrollo de aplicaciones basadas localización utilizando mensajería SMS y GPS. La API consistirá en dos módulos principales:

1. Conexión al dispositivo GPS: Tiene como objetivo la localización de dispositivos GPS y la extracción de datos del mismo.

2. Envío y recepción de mensajes: Tiene como objetivo enviar en una trama los datos con la información necesaria para realizar una solicitud al servidor, así como interpretar la trama de respuesta del servidor.

La hipótesis nula a probar es la siguiente:

Con funciones que utilicen GPS y el envío de SMS no se pueden realizar aplicaciones basadas en localización.

La hipótesis alterna es:

Con funciones que utilicen GPS y el envío de SMS se pueden realizar aplicaciones basadas en localización.

Aparte de este punto 1 de introducción, el presente documento contiene los siguientes puntos:

2. Descripción del plan 3. Casos de Prueba 4. Procedimientos de Pruebas. 5. Resultado de Pruebas

2. Descripción del Plan

2.1. Características a ser probadas

El presente plan de pruebas contiene la descripción de los casos de prueba definidos con el fin de validar y verificar que la API cumple con los requisitos de herramienta para el desarrollo de aplicaciones basadas en localización.

2.2. Características excluidas de las pruebas

No se dará prioridad al diseño de interfaz de las aplicaciones que se utilicen para probar la API. Las aplicaciones no serán probadas en dispositivos móviles que no cuenten con la tecnología

Java CLDC 1.0 y MIDP 2.0 Habrá casos en los que los datos que recibe la aplicación que utiliza la API sean simulados, es

decir que no serán reales

Page 164: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

152

2.3. Enfoque: Debido a que las mediciones son principalmente de funcionalidad, la API se probará realizando aplicaciones que la utilicen. Las cuales serán aplicaciones cliente que envían una solicitud y reciben una respuesta del servidor. Ya que se trata de una API orientada a servicios de localización, las aplicaciones que se realizarán con la API responderán preguntas como ¿qué hay cerca de..? ¿cómo llego a…? ¿qué actividades hay en..?. Se interactuará con un servidor para responder a la pregunta ¿qué hay cerca de…? Para las demás interrogantes se simulará esta respuesta.

2.4 Criterio pasa/ no pasa de casos de prueba. En la descripción de los casos de prueba, se detallarán los resultados esperados para cada uno de los casos. Se considerará que una prueba ha pasado con éxito cuando los resultados esperados coincidan con los descritos en el caso de prueba. En caso de no coincidencia, se analizarán las causas y se harán las modificaciones necesarias hasta que se cumplan con los resultados esperados. 2.5. Criterios de suspensión y requerimientos de reanudación. En ningún caso se suspenderán definitivamente las pruebas. Cada vez que se presente que el caso no pasa una prueba, inmediatamente se procederá a evaluar y corregir el error, permaneciendo en la prueba de este caso hasta que ya no se presenten dificultades con él.

2.6. Tareas de pruebas. Las tareas a desarrollar para preparar y aplicar las pruebas son:

Tarea Tarea precedente Habilidades especiales Responsabilidades

1. Preparación del plan de pruebas.

Terminación del análisis y diseño de

la API.

Conocimiento sobre servicios basados en localización y del IEEE Std. 829. Autora de esta tesis.

2. Preparación del diseño de pruebas. Tarea 1.

Conocimiento sobre la estructura de la API, sus clases y métodos y del IEEE Std. 829.

Autora de esta tesis.

3. Preparación de los casos de prueba. Tarea 2 Conocimiento de aplicaciones basadas

en localización. Autora de esta tesis.

4. Aplicación de pruebas. Tarea 3.

Conocimiento del entorno y preparación del sistema desarrollado para su ejecución.

Autora de esta tesis.

5. Resolver los incidentes de pruebas. Tarea 4. Conocimiento del lenguaje de

programación J2ME. Autora de esta tesis.

6. Evaluación de resultados.

Tarea 4. Tarea 5.

Conocimiento de las preguntas de investigación, la hipótesis de prueba, y los objetivos de esta tesis.

Autora de esta tesis.

2.7. Liberación de pruebas. La entrada especificada y la salida esperada en cada caso de prueba, serán suficientes para la comprobación del objetivo alcanzado y por lo tanto para la aceptación de las pruebas.

2.8. Requisitos ambientales. Las características y propiedades físicas y lógicas requeridas para el ambiente de pruebas, son las siguientes:

Page 165: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

153

Equipo PC de Escritorio Procesador Intel P4 o superior.

512M de memória RAM o superior. 80G en Disco duro. Windows XP

Celular Symbian OS v7.0s Bluetooth Tecnología Java: CLDC 1.1, MIDP 2.0

GPS Receptor genérico GPS

Herramientas Java Development Kit (J2SDK SE). NetBeans, como entorno de programación. Java Wireless Kit 2.0 Java Wireless Kit 2.5 Google Earth

2.9 Responsabilidades. Toda la responsabilidad de las pruebas recae en la autora de la tesis.

2.10 Riesgos y contingencias. Falta de tiempo: El tiempo es un factor importante que genera incertidumbre a la hora de aplicar las

pruebas, por lo que se tomarán como mínimo 16 casos de prueba, si el tiempo lo permite se extenderán las pruebas a otros casos.

Todas las fallas que se pudieran presentar en el transcurso del desarrollo de las pruebas deberán ir resolviéndose de manera iterativa por el responsable de esta tesis, hasta que la falla no produzca más.

3. Casos de Pruebas.

3.1 Características a probar

La siguiente lista define las características a ser probadas:

Conexión al dispositivo GPS: Se verificará que las clases para la conexión con dispositivo funcionen de forma adecuada y que los datos extraídos sean correctos.

Realización de la trama y envío de datos de solicitud al servidor: Se verificará que la clase que realiza las 16 tramas funcione adecuadamente y que el envío al servidor, funcione correctamente.

Interpretación de las 16 tramas y recepción de datos del servidor: Se verificará que la clase que interpretan las tramas funcione correctamente y que la recepción de mensajes sea adecuada.

3.2 Pruebas de conexión con el GPS

APISMSLBS-101 Pruebas de conexión con el GPS APISMSLBS-101-001 Búsqueda de dispositivos. APISMSLBS-101-002 Extracción de datos del GPS

3.2 Pruebas de Envío y recepción de información.

APISMSLBS-201-Envío y recepción de información. APISMSLBS-201-001 Consulta georeferenciada para solicitar sitios de interés. APISMSLBS-201-002 Consulta no georeferenciada para solicitar sitios de interés. APISMSLBS-201-003 Consulta georeferenciada para solicitar eventos cercanos.

Page 166: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

154

APISMSLBS-201-004 Consulta no georeferenciada para solicitar eventos cercanos. APISMSLBS-201-005 Consulta para solicitar un camino cuyo inicio y fin están representados por un

punto georeferenciado. APISMSLBS-201-006 Consulta para solicitar un camino donde su inicio está representado por un

punto georeferenciado y su fin por un punto no georeferenciado. APISMSLBS-201-007 Consulta para solicitar un camino donde su inicio está representado por un

punto no georeferenciado y su fin por un punto georeferenciado. APISMSLBS-201-008 Consulta para solicitar un camino cuyo inicio y fin está representado por un

punto no georeferenciado. APISMSLBS-201-009 Consulta georeferenciada para solicitar el clima utilizando la posición del

usuario. APISMSLBS-201-010 Consulta no georeferenciada para solicitar el clima. APISMSLBS-201-011 Respuesta georeferenciada de ubicación. APISMSLBS-201-012 Respuesta de camino. APISMSLBS-201-013 Respuesta georeferenciada de evento. APISMSLBS-201-014 Respuesta de clima. APISMSLBS-201-015 Respuesta no georeferenciada de evento.

4. Procedimiento de Pruebas Este capítulo contiene la descripción de los procedimientos de pruebas correspondientes a los distintos casos de prueba que conforman el presente plan de pruebas. Los distintos casos de pruebas se encuentran organizados en grupos de pruebas cuyo objetivo es validar y verificar una determinada funcionalidad de las rutinas de transformación. Cada uno de los casos de pruebas está dirigido a la validación y verificación de una funcionalidad muy concreta. Para cada uno de los grupos de pruebas se describe el propósito del grupo de pruebas, el entorno de prueba necesario, los distintos conjuntos de pruebas que lo conforman. Para cada uno de los casos de prueba se describe el propósito del caso, el entorno necesario para la ejecución del caso, el procedimiento de la prueba y los resultados esperados. En general, los casos de prueba dentro de un grupo de pruebas deberán ejecutarse en el orden de su descripción.

4.1 APISMSLBS-101 Pruebas de conexión con el GPS

4.1.1 Propósito Verificar que las clases realizadas para la conexión con el dispositivo GPS y la extracción de datos funcionen correctamente.

4.1.2 Entorno de prueba. Para la ejecución de los casos de prueba contenidos en este grupo se utilizarán los siguientes elementos:

• Celular con conexión bluetooth. • Dispositivo GPS. • Dispositivo bluetooth

4.1.3 APISMSLBS-101-001 Búsqueda de dispositivos. 4.1.3.1 Propósito

Detectar los dispositivos bluetooth cercanos al GPS. 4.1.3.2 Entorno de prueba.

La prueba se efectuará en un entorno con tres dispositivos que cuenten con conexiones bluetooth, el celular, el GPS, y otro dispositivo.

4.1.3.3 Proceso 1. Encender el dispositivo GPS y habilitar la conexión bluetooth del celular 2. Ejecutar la aplicación y ver la lista encontrada.

4.1.3.4 Resultado esperado. La lista mostrando los dos dispositivos bluetooth encontrados.

Page 167: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

155

4.1.4 APISMSLBS-101-002 Extracción de datos del GPS 4.1.4.1Propósito

Extraer los datos de ubicación del dispositivo GPS. 4.1.4.2 Entorno de prueba.

La prueba se efectuará en un entorno con tres dispositivos que cuenten con conexiones bluetooth, el celular, el GPS, y otro dispositivo.

4.1.4.3. Proceso 1. Encender el dispositivo GPS y habilitar la conexión bluetooth del celular 2. Ejecutar la aplicación y ver la lista encontrada. 3. Seleccionar el dispositivo GPS de la lista. 4. Observar los resultados.

4.1.4.4 Resultado esperado. Se verificarán que las coordenadas obtenidas sean correctas utilizando Google Earth.

4.2 APISMSLBS-201-Envío y recepción de información.

4.2.1 Propósito Verificar que las clases realizadas para formar la trama, enviar y recibir los mensajes funcionen correctamente.

4.2.2 Entorno de Prueba Para la ejecución de los casos de prueba contenidos en este grupo se utilizarán los siguientes elementos:

• Equipo celular con saldo para el envío de SMS.

4.2.3 APISMSLBS-201-001 Consulta georeferenciada para solicitar sitios de interés. 4.2.3.1 Propósito

Enviar una consulta georeferenciada al servidor solicitando las escuelas cercanas al punto de localización del cliente móvil y recibir la repuesta. Probar la correcta creación e interpretación de las tramas Q_GEO_UBICACION y R_NOGEO_UBICACION

4.2.3.2 Entorno de prueba La prueba se realizará en el cenidet. Se solicitaran dos datos por respuesta, si existen más datos se solicitarán

4.2.3.3 Proceso 1. EL usuario se ubicará en el cenidet. 2. Ejecutar la aplicación y realizar la petición de escuelas cercanas con los datos de

ubicación obtenidos en las prueba APISMSLBS-101-002 Extracción de datos del GPS. 3. Esperar la respuesta del servidor. 4. Mostrar la respuesta del servidor

4.2.3.4 Resultado esperado La aplicación debe mostrar al usuario la trama de consulta y respuesta, los datos enviados al servidor y los datos recibidos del servidor.

4.2.4 APISMSLBS-201-002 Consulta no georeferenciada para solicitar sitios de interés. 4.2.4.1 Propósito

Enviar una consulta no georeferenciada solicitando la farmacia más cercana al punto de localización del cliente. Probar la correcta creación e interpretación de la trama de tipo Q_NOGEO_UBICACION

4.2.4.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.4.3 Proceso 1. El usuario se ubicará en el cenidet. 2. Ejecutar la aplicación de consulta. 3. Proporcionar los datos de su ubicación (calle, colonia) y enviar la solicitud a la aplicación

receptora. 4. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.4.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

Page 168: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

156

4.2.5 APISMSLBS-201-003 Consulta georeferenciada para solicitar eventos cercanos. 4.2.5.1 Propósito

Enviar una consulta georeferenciada solicitando los eventos cercanos al punto de localización del cliente móvil. Probar la correcta creación e interpretación de la trama de tipo Q_GEO_EVENTO.

4.2.5.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.5.3 Proceso 1. EL usuario se ubicará en el cenidet. 2. Ejecutar la aplicación y realizar la petición de eventos cercanos con los datos de

ubicación obtenidos en las prueba APISMSLBS-101-002 Extracción de datos del GPS. 3. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.5.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.6 APISMSLBS-201-004 Consulta no georeferenciada para solicitar eventos cercanos. 4.2.6.1 Propósito

Enviar una consulta no georeferenciada solicitando los eventos cercanos al punto de localización del cliente móvil. Probar la correcta creación e interpretación de la trama de tipo Q_NOGEO_EVENTO.

4.2.6.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.6.3 Proceso 5. EL usuario se ubicará en el cenidet. 6. Ejecutar la aplicación 7. Proporcionar los datos de su ubicación (colonia, estado) y enviar la solicitud. 8. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.6.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.7 APISMSLBS-201-005 Consulta para solicitar un camino cuyo inicio y fin están representados por un punto georeferenciado.

4.2.7.1 Propósito Enviar una consulta para solicitar un camino cuyo inicio y fin están representados por un punto georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_GEO_GEO.

4.2.7.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.7.3 Proceso 1. Ejecutar la aplicación y realizar la petición de camino. Los datos de ubicación a utilizar

son: Inicio: 18.876748, -99.219381; fin:18.878702, -99.227254. 2. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.7.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.8 APISMSLBS-201-006 Consulta para solicitar un camino donde su inicio está representado por un punto georeferenciado y su fin por un punto no georeferenciado.

4.2.8.1 Propósito Enviar una consulta para solicitar un camino donde su inicio está representado por un punto georeferenciado y su fin por un punto no georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_GEO_NOGEO.

4.2.8.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.8.3 Proceso 1. Ejecutar la aplicación. Los datos de ubicación a utilizar son; inicio: 18.876748, -

99.219381; fin: Av. Estado de Puebla, Lázaro Cárdenas. 2. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.8.4 Resultado esperado

Page 169: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

157

La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.9 APISMSLBS-201-007 Consulta para solicitar un camino donde su inicio está representado por un punto no georeferenciado y su fin por un punto georeferenciado.

4.2.9.1 Propósito Enviar una consulta solicitando un camino donde su inicio está representado por un punto no georeferenciado y su fin por un punto georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_NOGEO_GEO.

4.2.9.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.9.3 Proceso 1. Ejecutar la aplicación y realizar la petición de camino. Los datos de ubicación son; Inicio:

Av. Estado de Puebla, Lázaro Cárdenas; fin: 18.8787702, -99.227254. 2. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.9.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.10 APISMSLBS-201-008 Consulta para solicitar un camino cuyo inicio y fin está representado por un punto no georeferenciado.

4.2.10.1 Propósito Enviar una consulta solicitando un camino cuyo inicio y fin está representado por un punto no georeferenciado. Probar la correcta creación e interpretación de la trama de tipo Q_CAMINO_NOGEO_NOGEO.

4.2.9.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.9.3 Proceso 1. Ejecutar la aplicación y realizar la petición de camino. Los datos de ubicación son; Inicio:

Av. Estado de Puebla, Lázaro Cárdenas; fin: Interior Internado Palmira, Palmira. 2. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.9.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.11 APISMSLBS-201-009 Consulta georeferenciada para solicitar el clima utilizando la posición del usuario.

4.2.11.1 Propósito Enviar una consulta georeferenciada solicitando el clima utilizando la localización del cliente móvil. Probar la correcta creación e interpretación de la trama de tipo Q_GEO_CLIMA.

4.2.11.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.11.3 Proceso 1. Ejecutar la aplicación y realizar la petición de clima con los datos de ubicación obtenidos

en las prueba APISMSLBS-101-002 Extracción de datos del GPS. 2. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.11.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.12 APISMSLBS-201-010 Consulta no georeferenciada para solicitar el clima. 4.2.12.1 Propósito

Enviar una consulta no georeferenciada solicitando el clima utilizando la posición del usuario. Probar la correcta creación e interpretación de la trama de tipo Q_NOGEO_CLIMA.

4.2.12.2 Entorno de prueba Los datos no se enviarán a un servidor, la trama será interpretada por una aplicación receptora.

4.2.12.3 Proceso 1. Ejecutar la aplicación y realizar la petición de clima proporcionando datos de ubicación

(ciudad). 2. La aplicación receptora interpreta la trama y muestra los datos de consulta.

Page 170: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

158

4.2.12.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación de consulta.

4.2.13 APISMSLBS-201-011 Respuesta Georeferenciada de ubicación. 4.2.13.1 Propósito

Enviar una respuesta con puntos de interés georeferenciados con información extra de cada punto y con información adicional en la trama. Probar la correcta creación e interpretación de la trama de tipo R_GEO_UBICACION y de los elementos adicionales.

4.2.13.2 Entorno de prueba Los datos no se enviarán desde un servidor, la trama será interpretada por una aplicación receptora.

4.2.13.3 Proceso 1. Ejecutar la aplicación y realizar el envío de puntos de interés georeferenciados. 2. La aplicación receptora interpreta la trama y muestra los datos de la respuesta.

4.2.13.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación.

4.2.14 APISMSLBS-201-012 Respuesta de camino. 4.2.14.1 Propósito

Enviar una respuesta con puntos georeferenciados. Probar la correcta creación e interpretación de la trama de tipo R_GEO_CAMINO.

4.2.14.2 Entorno de prueba Los datos no se enviarán desde un servidor, la trama será interpretada por una aplicación receptora.

4.2.14.3 Proceso 1. Ejecutar la aplicación y realizar el envío de puntos georeferenciados. 2. La aplicación receptora interpreta la trama y muestra los datos de la respuesta.

4.2.14.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación.

4.2.15 APISMSLBS-201-013 Respuesta georeferenciada de evento. 4.2.15.1 Propósito

Enviar un objeto Evento donde su ubicación sea un punto georeferenciado. Probar la correcta creación e interpretación de la trama de tipo R_GEO_EVENTO.

4.2.15.2 Entorno de prueba Los datos no se enviarán desde un servidor, la trama será interpretada por una aplicación receptora.

4.2.15.3 Proceso 1. Ejecutar la aplicación y realizar el envío de Evento. 2. La aplicación receptora interpreta la trama y muestra los datos de la respuesta.

4.2.15.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación.

4.2.16 APISMSLBS-201-014 Respuesta de clima. 4.2.16.1 Propósito

Enviar un objeto Clima. Probar la correcta creación e interpretación de la trama de tipo R_CLIMA. 4.2.16.2 Entorno de prueba

Los datos no se enviarán desde un servidor, la trama será interpretada por una aplicación receptora.

4.2.16.3 Proceso 1. Ejecutar la aplicación y realizar el envío del objeto Clima. 2. La aplicación receptora interpreta la trama y muestra los datos de consulta.

4.2.16.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación.

4.2.17 APISMSLBS-201-015 Respuesta no georeferenciada de evento. 4.2.17.1 Propósito

Enviar un objeto Evento donde su ubicación sea un punto no georeferenciado. Probar la correcta creación e interpretación de la trama de tipo R_NOGEO_EVENTO.

Page 171: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

Anexo D Plan de pruebas

159

4.2.17.2 Entorno de prueba Los datos no se enviarán desde un servidor, la trama será interpretada por una aplicación receptora.

4.2.17.3 Proceso 1. Ejecutar la aplicación y realizar el envío de Evento. 2. La aplicación receptora interpreta la trama y muestra los datos de la respuesta.

4.2.17.4 Resultado esperado La información mostrada por la función receptora debe ser idéntica a la enviada por la aplicación.

Page 172: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

160

Page 173: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

161

REFERENCIAS [abiR06] ABI Research. Location-Based Services. Septiembre 2006. Disponible en:

http://www.abiresearch.com/abiprdisplay.jsp?pressid=731 Ultima Consulta: Septiembre 2007.

[acqAPI06] Nokia Developer. Location Acquisition API. Disponible en: http://www.forum.nokia.com/info/sw.nokia.com/id/0fd3623b-8f6d-436f-9a00-3b4d7d69bab3/series_60_location_acquisition_api_specification_b.pdf.html Última consulta: Septiembre 2007

[actExp06] Active Xperts Software. Network management development Tools. SMS and MMS Documents. Disponible en: http://www.activexperts.com/asmssrvr/sms/ Última consulta: Septiembre de 2007.

[amari07] Sección amarilla. Libertad. Disponible en: http://www.seccionamarilla.com.mx/funcionalidad.aspx Ultima Consulta: Septiembre 2007.

[apiwiki06] Definición API. Disponible en: http://es.wikipedia.org/wiki/API Última consulta: Septiembre 2007.

[arqGSM06] Arquitectura de GSM. Disponible en: http://www.abiertos.org/modules.php?name=News&file=article&sid=1309 Última consulta: Julio de 2006.

[Barbolla03] Bernardos Barbolla Ana M., “Servicios Móviles de localización”, ceditec, España, 2003. http://www.ceditec.etsit.upm.es/Informes_globales/ceditec_loc.pdf#search=%22ceditec_loc.pdf%22 Última consulta: Octubre 2006.

[bbjde] BlackBerry Java Development Environment Disponible en: http://na.blackberry.com/eng/developers/downloads/jde.jsp Última consulta: Octubre 2007.

[Caic04] Caicedo Ángela, “Introducción J2ME”, Disponible en www.javahispano.com/news.type.action?type=jh. Última consulta: Septiembre 2006.

[cofetel07] COFEETEL, Estadísticas de Telecomunicaciones. Disponible en: http://www.cofetel.gob.mx/wb/COFETEL/COFE_Telefonia_movil__2 Ultima Consulta: Agosto de 2007.

[Dailey06] Dailey Paulson Linda, “TV Comes to the Mobile Phone”, revista IEEE Computer, abril de 2006.

[dmidp2] Sun Developer Network. The Java ME Device Table. Disponible en: http://developers.sun.com/mobility/device/pub/device/list.do?sort=manufacturer&filterIds=81&filterIds=61&page=7 Última consulta: Septiembre 2007.

[esri07] ESRI España Geosistemas Disponible en: http://www.esri-es.com/ Última consulta: Octubre 2006.

Page 174: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

162

[Galvez03] Gálvez Rojas Sergio, Ortega Díaz Lucas, “Java a tope: J2ME”. Edición electrónica 2003. Disponible en: http://www.lcc.uma.es/~galvez/ftp/libros/J2ME.pdf Última consulta: Septiembre 2007

[gamar06] Gamarod. Glosario Informático Disponible en: http://www.gamarod.com.ar/recursos/glosario Última consulta: Septiembre de 2007.

[Gens06] Martínez Gens Luis E., Urios de las Heras Mercedes, “Tecnologías de Localización y Posicionamiento para Servicios Basados en Localización (LBS)”, España 2006. Disponible en: http://www.coit.es/publicaciones/bit/bit154/68-70.pdf Última consulta: Septiembre 2007.

[gpp06] 3GPP TS 23.040 V6.5.0. Technical realization of the Short Message Service. Disponible en: http://www.arib.or.jp/IMT-2000/V460Nov05/5_Appendix/Rel6/23/23040-650.pdf Última consulta: Septiembre 2007.

[gps06] GPS information Disponible en: http://www.gpsinformation.org/dale/nmea.htm Última consulta: Noviembre 2006.

[Iusacel06] Iusacell. Ubicacel. Disponible en: http://www.iusacell.com Ultima consulta: Septiembre 2007.

[j2mebb] Sun Developer Network. Programming the BlackBerry With J2ME. Disponible en: http://developers.sun.com/mobility/midp/articles/blackberrydev/ Última consulta: Octubre 2007.

[jsr179] Location API for J2ME. Disponible en: http://jcp.org/en/jsr/detail?id=179 Ultima Consulta: Septiembre 2007.

[jsr82] [JSR-000082 Java APIs for Bluetooth - Maintenance Release, Java Community Process, Disponible en: http://jcp.org/aboutJava/communityprocess/mrel/jsr082/index.html, última consulta: Octubre de 2007.

[jst07] Salamea Bismar. Workshop J2ME. JST07. Guayaquil Ecuador. Enero 2007.

[latinia07] Latinia. Situación actual del mercado de telecomunicaciones en México. Disponible en: http://www.latinia.com/mk_mexico/index.jsp Ultima Consulta: Agosto de 2007.

[Lira06] Solano Lira Hilda, “Desarrollo de un prototipo de comercio electrónico orientado a dispositivos móviles incorporando el Sistema de Posicionamiento Global”, tesis de maestría, cenidet. En desarrollo.

[Magon06] Magon Ajay, Shukla Reena, “LBS the ingredients and the alternatives”. Gis Development. Disponible en: http://www.gisdevelopment.net/technology/lbs/techlbs006.htm Última consulta: Septiembre 2007.

[midp] Mobile Information Device Profile (MIDP), "Mobile Information Device Profile (MIDP); .JSR 37, JSR 118", Sun Developer Network (SDN) Disponible en: http://java.sun.com/products/midp/, última consulta Octubre de 2007.

Page 175: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

163

[movi07] Movistar. Servicios basados en localización. Localízame. Disponible en: http://www.movistar.com.mx/servicios/serv_loca.html Ultima consulta: Septiembre 2007.

[nb5] NetBeans IDE 5.5, Disponible en: http://www.netbeans.org/, última consulta Septiembre de 2007.

[Neun06] [Steiniger Stefan, Neun Moritz, Alistair Edwardes “Foundations of Location Based Services”, Departamento de Geografía, Universidad de Zurich, Suiza. 2006. Disponible en: http://www.geo.unizh.ch/publications/cartouche/lbs_lecturenotes_steinigeretal2006.pdf Última consulta: Septiembre 2007.

[nextel06] Nextel. Servicios avanzados. Localización y rastreo. Disponible en: http://www.nextel.com.mx/AdvancedTools/ilocatg_new.htm Ultima consulta: Septiembre 2007.

[nmea06] NMEA http://www.marimsys.com/paginas/nmea_codigo.htm Última consulta: Septiembre 2007.

[Prieto03] Prieto Manuel, Curso de J2ME. 2003. Disponible en: http://ait.upct.es/asignaturas/ct/practicas/practica2/Curso_J2ME.pdf Última consulta. Septiembre 2007.

[Qbp07] Quiñónez Bernardino Pedro, “gateway sms pull para servicios basados en localizacion con una arquitectura de servicios web”, tesis de maestría, cenidet 2007.

[Rojas06] Olivares Rojas Juan Carlos, “MOVIWEB: Plataforma para soportar el acceso a sitios Web desde dispositivos móviles”, tesis de maestría, cenidet, 2005.

[Roldan05] Roldan David, Comunicaciones inalámbricas, Editorial AlfaOmega, 2005

[Ruiz05] López Ruiz Sonia, “Desarrollo de un prototipo para un sitio de comercio electrónico orientado a dispositivos móviles que usan tecnología WAP”, tesis de maestría, cenidet, 2005.

[sdks80] Forum Nokia. Series 80 Platform SDKs for Symbian OS. Disponible en http://www.forum.nokia.com/info/sw.nokia.com/id/449a2f84-2a8a-44fa-a7f4-93b53cb9c89a/Series_80_Platform_SDK_s_for_Symbian_OS_for_Java.html Última consulta: Septiembre 2007.

[sdksony] Sony Ericsson Developer World. Java ME Docs and Tools. Sony Ericsson SDK 2.2.4 for the Java ME Platform. Disponible en: http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp Última consulta: Septiembre 2007.

[sg0205] Rodríguez Ramés “Estructura de paquetes” Revista Software Guru. Marzo – Abril 2005.

[std829] Software Engineering Technical Committee of the IEEE Computer Society. IEEE Standard for Software Test Documentation. Disponible en: http://www.ucsc.cl/~marciam/weblog/images/ieeestd829-1998standardtest_documentation.pdf . Última consulta: Septiembre 2007.

Page 176: API SMS para el Procesamiento de Consultas Georeferenciadas / No Georeferenciadas

164

[th03] Sun Developer Network. Using Threads in J2ME Applications. Disponible en: http://developers.sun.com/mobility/midp/articles/threading2/ Última consulta. Septiembre 2007.

[unefon06] Unefon. Servicios basados en localización. Disponible en: http://www.unefon.com.mx/evolution/content/html/servicios/loc_como.jsp Ultima Consulta: Septiembre 2007.

[Venturin03] Venturino Gabriel, “Servicios basados en tecnologías de localización”. Expo COMM, Argentina, 2003 www.cicomra.org.ar/eventosycursos/Eca2003/Presentacion%20final%20G%20Venturino.pdf Última consulta: Octubre 2006.

[wiki07] Wikipedia. La enciclopedia Libre Disponible en: www.wikipedia.org. Última consulta: Septiembre 2007.

[wikiGSM] Definición GSM. Disponible en: http://es.wikipedia.org/wiki/GSM Última consulta: Septiembre 2007.

[wma2] The Wireles Messaging API 2.0 Disposnible en: http://www.jcp.org/en/jsr/detail?id=120 Última consulta: Octubre 2007.