Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
ESCUELA SUPERIOR DE INGENIERÍA
DESARROLLO INFORMACIÓN TURISTICA PARA DISPOSITIVOS MÓVILES.
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
ASESOR TÉCNICOBECERRA
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR D
INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA
ESPECIALIDAD DE COMUNICACIONES
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
DESARROLLO DE UN PROTOTIPO DE APLICACIÓN DE INFORMACIÓN TURISTICA PARA DISPOSITIVOS MÓVILES.
P R O Y E C T O T E R M I N A L
QUE PARA OBTENER EL TÍTULO DE
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
P R E S E N T A
LUIS EDUARDO MORENO NAVA
ASESOR TÉCNICO Y METODOLÓGICO: Ing. PEDRO MARTÍN MORALES
MÉXICO, D. F. DICIEMBRE 2013
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTR
INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA
ESPECIALIDAD DE COMUNICACIONES
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
I
ESCUELA SUPERIOR DE INGENIERÍA
DE UN PROTOTIPO DE APLICACIÓN DE INFORMACIÓN TURISTICA PARA DISPOSITIVOS MÓVILES.
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
: Ing. PEDRO MARTÍN MORALES
MÉXICO, D. F. DICIEMBRE 2013
INSTITUTO POLITÉCNICO NACIONAL
E INGENIERÍA MECÁNICA Y ELÉCTRICA
INGENIERÍA EN COMUNICACIONES Y ELECTRÓNICA
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
II
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
III
Agradecimientos
A mi Familia, en especial a mis Abuelos por su apoyo incondicional, a mi Madre que me
dio la vida, a Mari por toda su comprensión, a Jessica por todo su amor, los amo.
A mi tío Ale por ser mi inspiración y mi modelo.
A mis compañeros y amigos, nunca los olvidare.
A Dios, porque aunque nuestra relación no es muy clara, nunca lo he sentido lejos.
Luis Eduardo Moreno Nava
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
IV
Contenido I
Agradecimientos ......................................................................................................................................... III
Contenido ................................................................................................................................................... IV
Objetivos ..................................................................................................................................................... IX
Resumen ..................................................................................................................................................... X
Introducción ................................................................................................................................................ XI
Capítulo 1
Panorama de los dispositivos móviles y sus sistemas operativos
1.1 Introducción ....................................................................................................................................... 1
1.2 Sistemas Operativos para dispositivos móviles ................................................................................ 1
1.2.1 Android ..................................................................................................................................... 2
1.2.2 iOS .............................................................................................................................................. 2
1.2.3 Windows Phone ...................................................................................................................... 2
1.2.4 BlackBerry OS ......................................................................................................................... 2
1.3 Comparación de plataformas............................................................................................................. 3
1.4 Aplicaciones Móviles .......................................................................................................................... 3
1.5 Dispositivos móviles ........................................................................................................................... 4
1.5.1 Arquitectura del teléfono inteligente Fujitsu con sistema operativo Android ....... 4
1.5.2 Microprocesador ARM Cortex-A9 ...................................................................................... 6
Capítulo 2
El sistema operativo Android, panorama de redes inalámbricas y modelo TCP/IP
2.1 Introducción ....................................................................................................................................... 9
2.2 Redes inalámbricas............................................................................................................................. 9
2.2.1 Redes inalámbricas de área personal o WPAN (Wireless Personal Area Network) ............................................................................................................................................. 9
2.2.2 Redes inalámbricas de área local WLAN (Wireless Local Area Network) ............ 10
2.2.3 Redes inalámbricas de área metropolitana WMAN (Wireless Metropolitan Area Networks) ......................................................................................................................................... 10
2.2.4 Redes inalámbricas globales o WWAN (Wireless Wide Area Network) ................ 10
2.3 Tecnologías WLAN inalámbricas ...................................................................................................... 10
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
V
2.3.1 WiFi .......................................................................................................................................... 10
2.4 Redes Celulares WWAN ................................................................................................................... 12
2.4.1 Red Celular 2G ...................................................................................................................... 12
2.4.2 Red celular 2.5 G .................................................................................................................. 12
2.4.3 Red celular 3G ....................................................................................................................... 12
2.4.4 LTE ........................................................................................................................................... 12
2.4.5 WIMAX (WorlWide Interoperability for Microwave Access-Interoperabilidad Universal para Accesos de Microondas) ................................................................................. 13
2.4.6 GSM. ........................................................................................................................................ 13
2.5 Android ............................................................................................................................................. 15
2.5.1 Arquitectura de Android ..................................................................................................... 15
2.5.2 El núcleo Linux ..................................................................................................................... 16
2.5.3 Runtime de Android ............................................................................................................ 16
2.5.4 Librerías Nativas .................................................................................................................. 17
2.5.5 Entorno de Aplicación ........................................................................................................ 17
2.5.6 Aplicaciones .......................................................................................................................... 18
2.5.7 Niveles de API (Versiones Android) ................................................................................ 18
2.6 Requisitos para Desarrollo de aplicaciones móviles ...................................................................... 19
2.6.1 Eclipse ..................................................................................................................................... 19
2.6.2 Android SDK .......................................................................................................................... 20
2.6.3 Java Development Kit JDK (Kit de desarrollo Java) ................................................... 21
2.7 Componentes de una Aplicación .................................................................................................... 23
2.7.1 Vista (View) ............................................................................................................................ 23
2.7.2 Layout ..................................................................................................................................... 23
2.7.3 Actividad ................................................................................................................................. 23
2.7.4 Intenciones ............................................................................................................................ 23
2.7.5 Proveedores de contenido ................................................................................................ 24
2.7.6 Receptor de anuncios de broadcast ............................................................................... 24
2.8 Descripción de los elementos de un proyecto Android .................................................................. 24
2.9 Modelo TCP/IP.................................................................................................................................. 27
2.10 Protocolo SSL .................................................................................................................................. 31
2.10.1 Protocolo de registros ...................................................................................................... 33
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
VI
2.10.2 Protocolo Handshake (apretón de mano) ................................................................... 34
• Petición de saludo (Hello Request) ................................................................................... 34
• Saludo de cliente (Client Hello) .......................................................................................... 34
� Saludo de servidor (Server Hello) ...................................................................................... 34
� Certificado de servidor (Certificate) o intercambio de claves de servidor (Server Key Exchange) ................................................................................................................................ 35
� Petición de certificado (Certificate Request) .................................................................. 35
� Fin de saludo de servidor (Server Hello Done) .............................................................. 35
� Certificado de cliente (Certificate) ..................................................................................... 36
� Intercambio de claves de cliente (Client Key Exchange) ............................................ 36
� Verificación de certificado (Certificate Verify) ............................................................... 36
� Finalización (Finished).......................................................................................................... 36
2.10.3 SSL Protocolo de Alerta ................................................................................................... 37
2.11 Funciones de una vía y hash .......................................................................................................... 37
2.11.1 MAC ....................................................................................................................................... 38
Capítulo 3
Desarrollo del software
3.1 Introducción ..................................................................................................................................... 39
3.2 Creación de un nuevo proyecto para el desarrollo de una aplicación Android ............................. 39
3.3 Diseño de una interfaz de usuario. .................................................................................................. 43
3.3.1 RelativeLayout ...................................................................................................................... 43
3.3.2 ImageButton .......................................................................................................................... 44
3.3.4 Textview .................................................................................................................................. 45
3.3.5 HorizontalScrollView ........................................................................................................... 46
3.3.6 Creación de cadenas de texto .......................................................................................... 48
3.4 Actividades y eventos ...................................................................................................................... 48
3.4.1 Clase Webview .............................................................................................................................. 49
3.5 Manifiesto Android .......................................................................................................................... 49
3.6 Firma de Aplicaciones ...................................................................................................................... 50
3.7 Google Maps API V2 ......................................................................................................................... 53
3.9 Ciclos de vida de las actividades en la aplicación............................................................................ 61
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
VII
3.10 Descripción de las actividades de la aplicación ............................................................................. 62
3.11 Comunicación de la aplicación móvil ............................................................................................. 63
3.10.1 Comunicación por capas ................................................................................................. 63
3.10.2 Comunicación a nivel capa de transporte y aplicación ........................................... 64
Capítulo 4
Pruebas y publicación de aplicaciones en una tienda virtual.
4.1 Introducción ..................................................................................................................................... 68
4.2 Requisitos de instalación ................................................................................................................. 68
4.3 Pruebas virtuales .............................................................................................................................. 68
4.4 Pruebas y Resultados en Dispositivos Reales .................................................................................. 73
4.5 Publicar Aplicaciones en una tienda virtual .................................................................................... 76
Conclusiones ............................................................................................................................................... 77
Bibliografía ................................................................................................................................................ 78
Lista de figuras ......................................................................................................................................... 79
Lista de tablas ........................................................................................................................................... 81
Lista de códigos ........................................................................................................................................ 80
Lista de Acrónimos................................................................................................................................... 79
Anexos ....................................................................................................................................................... 90
Código Java .............................................................................................................................................. 90
Clase MainActivity (Menú Principal) ..................................................................................................... 90
Clase Mapin (Clase que muestra Google Maps ) ................................................................................... 92
Clase GGaleria (Galeria de la aplicación) ............................................................................................... 95
Clase Santorin (Información Santuario de Chalma) .............................................................................. 96
Clase Vid (Contenido Web Ocuilan) ....................................................................................................... 97
Clase Zempoala (Información lagunas de Zempoala) ........................................................................... 99
Interfaces Gráficas XML ........................................................................................................................ 100
Activity_main.xml ................................................................................................................................ 100
Ggaleria.xml .......................................................................................................................................... 105
Laguna.xml............................................................................................................................................ 108
Mapin.xml ............................................................................................................................................. 111
Sanctuario.xml ...................................................................................................................................... 113
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
VIII
Vid.xml .................................................................................................................................................. 116
Manifiesto Android .............................................................................................................................. 117
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
IX
Objetivos
Objetivo General
Desarrollar un prototipo de aplicación móvil para sistema operativo Android que
proporcione información turística general sobre el municipio de Ocuilan de Arteaga.
Objetivos particulares
1.-Describir las herramientas de diseño y desarrollo básicos de una aplicación móvil
para sistema operativo Android.
2.-Describir el funcionamiento de la API Versión 2 de Google Maps para Android.
3.-Implementar las herramientas de diseño y desarrollo básicos en una aplicación
móvil.
4.-Implementar la API V2 de Google Maps de Google en la aplicación móvil.
5.-Describir la comunicación que establece la aplicación móvil a nivel de capa de
transporte y capa de aplicación.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
X
Resumen
En el presente proyecto se diseña y desarrolla una aplicación móvil para sistema
operativo Android, la cual tendrá la función de actuar como una guía de información
turística de los diferentes atractivos de municipio de Ocuilan de Arteaga en el estado de
México, en este se describen las herramientas computacionales necesarias para llevar
a cabo el diseño de la interfaz de usuario y el desarrollo del código fuente de la
aplicación, se describe la implementación de dichas herramientas, y el proceso de
comunicación de la aplicación a nivel de capa de transporte y capa de aplicación del
modelo TCP/IP en la utilización del servicio externo de mapas de Google.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
XI
Introducción
En el presente proyecto se desarrolla una aplicación móvil para sistema operativo
Android, que proporcione información turística acerca del municipio de Ocuilan de
Arteaga en el estado de México, en él se describe el proceso de desarrollo del software
y el proceso de comunicación a nivel de capa de transporte y capa de aplicación que
realiza la aplicación móvil una vez en operación.
En el capítulo 1 se describen los dispositivos móviles, su arquitectura, se describen
también las diferentes plataformas y sistemas operativos para el desarrollo de
aplicaciones móviles y se comparan sus principales características.
En el capítulo 2 se mencionan algunas de las tecnologías de comunicaciones
inalámbricas más importantes, además se describe el sistema operativo Android y los
elementos de una aplicación sobre este sistema operativo, también se describe el
modelo TCP/IP (Transport Control Protocol/Internet Protocol-Protocolo de Control de
Transporte/Protocolo de Internet), se describen los protocolos de capa de transporte y
la capa de aplicación que utilizados en la comunicación que establece la aplicación
móvil.
En el capítulo 3 se describe el desarrollo de la aplicación móvil en el ambiente de
desarrollo Eclipse, el contenido de la aplicación y sus ciclos de vida, además se
describe el proceso de obtención de una clave para tener acceso a los servicios de
Google Maps (Mapas de Google) y el proceso de comunicación que establece el
dispositivo móvil a través de la aplicación a nivel de capa de transporte y capa de
aplicación del modelo TCP/IP.
En el capítulo 4 se describen las pruebas realizadas del funcionamiento de la
aplicación móvil sobre diferentes dispositivos Android tanto virtuales como reales y se
muestran los resultados de las mismas. Se describen los pasos para publicar una
aplicación en una tienda en línea.
En la parte final se concluye y se promueve la difusión y utilización de los contenidos
de este proyecto para beneficiar a las poblaciones con potencial turístico del país.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
1
Capítulo 1
Panorama de los dispositivos móviles y sus sistemas operativos
1.1 INTRODUCCIÓN
En los últimos años el mundo ha visto de cerca y ha experimentado el avance de los
dispositivos móviles de comunicación como teléfonos inteligentes y tabletas, y con ello
las personas los han involucrado en sus vidas volviéndolos casi artículos de primera
necesidad.
El avance en las comunicaciones móviles ha permitido que cada día más usuarios
tengan acceso a servicios de telefonía de tercera y cuarta generación. Es por ello que
todos los productos relacionados a este sector están creciendo de manera
impresionante, uno de esos productos son las aplicaciones para dispositivos móviles.
En este capítulo se da un panorama general de los dispositivos móviles, su
arquitectura, sus características, y sus diferentes sistemas operativos existentes en el
mercado.
1.2 SISTEMAS OPERATIVOS PARA DISPOSITIVOS MÓVILES
Hoy en día las personas se comunican e interactúan entre sí de una forma virtual a
través de los dispositivos móviles, según la página oficial de Android cada día se
activan alrededor de un millón de nuevos dispositivos con alguna versión del sistema
operativo Android, además de que en su plataforma de mercado de aplicaciones se
descargan alrededor de 1.5 billones de estas al mes. [11]
En el mercado existen diferentes marcas de dispositivos móviles y también existen
diferentes sistemas operativos que compiten por atraer al mayor número de usuarios,
los más populares son Android, Windows Phone, y Mac iOS.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
2
El sistema operativo para dispositivos móviles que mayor número de usuarios tiene es
Android, es por ello que la aplicación es desarrollada para este sistema, según Forbes
Android cuenta con alrededor de 900 millones de usuarios alrededor del mundo. [10]
1.2.1 ANDROID Android es una plataforma basada en Linux, fiel a la filosofía Linux, Android es una
plataforma libre. Android fue adquirida por Google, quien formo el Open Handset
Aliance, que es un grupo de más de 30 empresas que desarrollan la plataforma y
generan los diferentes API (Application Programming Interface-Interface de
Programación de Interfaces). Android publico el SDK (Software Development Kit-
Paquete de Desarrollo de Software) para permitir a los desarrolladores acceder a los
recursos de librerías necesarias para desarrollar aplicaciones móviles. [6]
1.2.2 IOS Es un sistema operativo para dispositivos móviles propiedad de la empresa Apple, fue
desarrollado principalmente para el iPhone (Teléfono inteligente desarrollado por
Apple), y después fue utilizado en los diferentes productos de la empresa, este sistema
operativo solo puede instalarse en dispositivos de Mac, es decir ningún otro hardware
puede instalar este sistema operativo. [6]
1.2.3 WINDOWS PHONE Es un sistema operativo para dispositivos móviles desarrollado por Microsoft, con la
intención de competir con iOS y Android, unificando ahora las características de su
sistema operativo para PC (Personal Computer-Computadora Personal) y para móviles.
[6]
1.2.4 BLACKBERRY OS Es un sistema desarrollado por BlackBerry para sus dispositivos móviles, se enfoca en
un mercado empresarial, fue pionero en el uso de correo electrónico, y una propiedad
característica es que asigna a casa usuario un PIN (Personal Identification Number-
Número de Identificación Personal) único, con el cual pueden tener comunicación entre
dispositivos BalckBerry. [6]
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
3
1.3 COMPARACIÓN DE PLATAFORMAS
A continuación se muestra una tabla con las principales características de los
diferentes sistemas operativos.
iOS Android BackBerry OS Windows
Phone
Nucleo Mac iOS Linux 2.6 Mobile OS Windows CE
Familia CPU ARM ARM, MIPS,X
86
ARM ARM
Navegación WebKit WebKit WebKit Packet
Internet
Explorer
Soporte Flash No Si Si No
HTML5 Si Si Si Si
Soporte
memoria
externa
No Si Si No
Lenguaje de
programación
C++ Java, C++ Java C#
Licencia de
Software
Propietaria Libre Propietaria Propietaria
Plataforma de
desarrollo
Mac Mac/ Linux /
Windows
Windows/
Mac
Windows
CÓDIGO 1.1 COMPARATIVA PLATAFORMAS MÓVILES
1.4 APLICACIONES MÓVILES
Las aplicaciones móviles son programas desarrollados para las plataformas de
dispositivos móviles que se han vuelto muy populares en la actualidad, estas son tan
variadas que en el mercado podemos encontrar desde juegos, hasta herramientas
complejas diseñadas para el uso de profesionales como médicos.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
4
El desarrollo de estas aplicaciones implica el diseño de las interfaces de usuario y el
código fuente de la aplicación que le dará funcionalidad a la aplicación, los
desarrolladores de aplicaciones móviles pueden utilizar diferentes plataformas y
lenguajes de programación, cada quien imprime su toque personal y su creatividad
para el diseño de estas.
En la actualidad estas aplicaciones se comercializan en las plataformas de difusión de
cada sistema operativo, y se han vuelto una gran industria, cabe mencionar que
muchas de estas aplicaciones son gratuitas ya que se dedican a vender publicidad que
es mostrada a los usuarios de dicha aplicación.
1.5 DISPOSITIVOS MÓVILES
Los dispositivos móviles son dispositivos electrónicos con características similares a los
ordenadores, sin embargo estos son más compactos y algunos de ellos tienen servicios
de telefonía celular.
Algunos dispositivos móviles son las denominadas tabletas o PND (Personal
Navigation Devices-Dispositivos Personales de Navegación), los teléfonos inteligentes
(Smartphones) y PMP (Personal Media Players-Reproductores Media Personales).
1.5.1 ARQUITECTURA DEL TELÉFONO INTELIGENTE FUJITSU CON SISTEMA OPERATIVO
ANDROID Este tipo de arquitectura se basa en la arquitectura ARM (Advance RISC (Reduced
Instruction Set Computer-Ordenador con Conjunto Reducido de Instrucciones)
Machine-Arquitectura Avanzada RISC) se compone de un procesador de aplicación, un
modem de banda base, una unidad de comunicación inalámbrica (Wireless), una fuente
de energía, una unidad de audio LSI (Large Scale Integration-Integración de gran
escala), una memoria SDRAM (Synchronous Dinamic Random Access Memory-
Memoria síncrona dinámica de acceso aleatorio) , y una memoria Flash. [8]
El procesador de aplicación se compone de un CPU (Central Process Unit-Unidad de
procesamiento central), un GPU (Graphic Process Unit- unidad de procesamiento
gráfico), controladores para dispositivos periféricos y controladores para cámara
memoria y pantalla.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
5
FIGURA 1.1 ARQUITECTURA TELÉFONO INTELIGENTE FUJITSU
Entre los dispositivos periféricos que considera la arquitectura Fujitsu se consideran los
siguientes:
� Wireless LAN (Local Area Network-Red de Área Local)
� Bluethoot
� GPS (Global Position System-Sistema de Posicionamiento Global),
� USB (Universal Serial Bus-Bus Serial Universal)
� UART (Universal Asynchronous Receiver Transmitter-Rector Transmisor
Asíncrono Universal)
� SDIO (Secure Digital Input/Output-Entrada/Salida Digital Segura)
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
6
FIGURA 1.2 PROCESADOR DE APLICACIÓN FUJITSU
Los teléfonos inteligentes requieren un alto desempeño en la calidad de gráficos, las
pantallas para estos tienen tamaños que van desde los 800 x 400 pixeles, hasta los
1920 x 1080 pixeles hasta 2012, esto con el fin de soportar incluso HD (High Definition-
Alta Definición). Para soportar HD los dispositivos requieren de procesadores potentes
hasta de 2 GHz, y el aumento de la cantidad núcleos del procesador (hasta cuatro).
Este dispositivo contiene un GPU encargado del procesamiento de gráficos. [8]
El avance en el desarrollo de dispositivos móviles considera importante la eficiencia en
el consumo de energía para ello la disminución del tamaño de los equipos resulta
primordial ya que solamente el procesador de aplicación consume entre el 30% y 50%
de la energía, el tamaño de compuerta de los transistores CMOS (Complementary
Metal Oxide Semiconductor-Semiconductor Complementario Óxido Metálico) que
conforman el procesador de aplicación fue reducido de 45nm en 2011 hasta 28nm
2013, resultando en un consumo promedio de entre 2.3 y 3 watts. [8]
1.5.2 MICROPROCESADOR ARM CORTEX-A9
El microprocesador Cortex-A9 multinúcleo es un procesador que soporta de uno a
cuatro unidades de CPU y memoria caché, cada procesador puede ser configurado de
manera independiente configurándolo a partir del tamaño de su caché, y si sus
interfaces FPU (Floating Point Unit-Unidad de Punto Flotante) y PTM (Program Trace
Macrocell- Programa de señalización macrocelular) son soportadas. Cada procesador
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
7
tiene un ACP (Accelerator Coherence Port-Puerto de Aceleración Coherente), que
permiten utilizar aceleradores como DMA (Direct Memory Acces-Acceso directo de
memoria). [9]
FIGURA 1.3 ARQUITECTURA MICROPROCESADOR ARM
Características:
• SCU (Snoop Control Unit-Unidad de Control): Esta unidad es la central de
inteligencia de la tecnologia ARM multinúcleo y es responsable de manejar la
interconexión, comunicación, sistema de memoria, administrar los procesos de
caché, y administra los dispositivos periféricos.
• Accelerator Coherence Port (Puerto de Coherencia de Acelerador): Es una
interfaz esclavo en el SCU, la cual provee interconexión con otros dispositivos
maestro mediante el estándar AMBA (Advanced Microcontroller Bus
Architecture-Arquitectura Avanzada de Microcontrolador Bus) 3 AXI (Advance
Extensible Unit-Unidad avanzada extensible), el cual es un protocolo de
interconexión de chips.
• GIC (Generic Interrupt Controller-Controlador General de Interrupciones):
Implementar un GIC provee un aprovechamiento de la comunicación interna del
procesador y prioriza las interrupciones, soporta hasta 224 interrupciones
simultáneas.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
8
• ABIU (Advanced Bus Interface Unit-Unidad de Interfaz de Bus Avanzado):
encargado de la interconexión entre el procesador y el resto de los sistemas
internos, capaz de exceder los 12 Gbps.
• Advanced L2 Cache Controller (Controlador Avanzado de caché L2): optimiza el
controlador de caché L2.
• PTM: Provee completa visibilidad con el flujo de instrucciones con un contador
de ciclos.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
9
Capítulo 2
El sistema operativo Android, panorama de redes
inalámbricas y modelo TCP/IP
2.1 INTRODUCCIÓN
En el siguiente capítulo se abordan los temas referentes a las redes inalámbricas más
importantes de la actualidad, esto debido a que forman parte del sustento teórico del
presente proyecto, también se describe el sistema operativo Android para dispositivos
móviles, se describen los elementos principales de una aplicación Android, y los
elementos básicos de desarrollo de aplicaciones, por último se presenta el modelo
TCP/IP, se describen las capas que lo componen, y se dedica especial atención a
protocolos de la capa de transporte y de aplicación y capa de aplicación.
2.2 REDES INALÁMBRICAS
Una red inalámbrica es aquella en la que los dispositivos que forman parte de ella no
necesitan cables para comunicarse. Existen diferentes tecnologías que permiten crear
redes inalámbricas desde los infrarrojos y radiofrecuencia, hasta grandes redes
globales.
Las redes inalámbricas ofrecen la ventaja de ser más baratas y accesibles que las
redes cableadas.
Las redes inalámbricas se dividen en cuatro categorías
2.2.1 REDES INALÁMBRICAS DE ÁREA PERSONAL O WPAN (WIRELESS PERSONAL AREA
NETWORK)
Son de poca cobertura, se utilizan para conectar dispositivos cuya distancia entre si es
mínima. Algunas de las tecnologías que se utilizan en este tipo de red son el Bluetooth
y el infrarrojo. [1]
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
10
2.2.2 REDES INALÁMBRICAS DE ÁREA LOCAL WLAN (WIRELESS LOCAL AREA NETWORK)
Pueden alcanzar cientos de metros, estas redes son usadas en entornos
empresariales, espacios públicos y en el hogar, la tecnología más popular y utilizada
para este tipo de redes es WiFi. [1]
2.2.3 REDES INALÁMBRICAS DE ÁREA METROPOLITANA WMAN (WIRELESS
METROPOLITAN AREA NETWORKS)
Este tipo de redes se establecen para conectar dispositivos y proveer comunicación
entre ellos en una región metropolitana, para conectar campus, edificios, oficinas
distribuidas en una región de kilómetros. [1]
2.2.4 REDES INALÁMBRICAS GLOBALES O WWAN (WIRELESS WIDE AREA NETWORK)
Este tipo de sistemas se basan en la telefonía móvil, pueden cubrir un país o incluso
varios países, entre las tecnologías más importantes para este tipo de redes están
GSM (Global System for Mobile Communications) y CDMA (Code Division Multiple
Acces). [1]
2.3 TECNOLOGÍAS WLAN INALÁMBRICAS
2.3.1 WIFI
Esta es la tecnología más popular para crear redes de área local inalámbricas. En 1999
se crea la WECA (Wireless Ethernet Compability Alliance), que posteriormente
establecieron la norma IEEE (Institute of Electrical and Electronic Engineering- IEEE
(Institute of Electrical and Electronic Engineering-Instituto de Ingenieros Eléctricos y
Electrónicos)) 802.11. [1]
Versiones de la normativa IEEE 802.11
Versión Características
802.11 a 54 Mbps WLAN en banda de 5 GHz.
802.11 b 11 Mbps WLAN en banda de 2.4 GHz.
802.11 c Cruce sin cables.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
11
802.11 d Modo mundial, adaptación de los
requerimientos nacionales.
802.11 e QoS(Quality of service-Calidad del
servicio) y extensiones que fluyen a través
de 802.11 a/g/h.
802.11 g 54Mbps WLAN en banda de 2.4 GHz,
802.11 h 802.11 a con DFS(Distribution File
System-) y TCP(Transmission Control
Protocol) (Europa)
802.11 i Autenticación y cifrado AES
802.11 j 802.11 a con canales adicionales por
encima de 4-9 GHz (Japón)
802.11 k Intercambio de información de capacidad
entre clientes y puntos de acceso
802.11 m Mantenimiento, publicación de
actualizaciones estándar.
802.11 n Banda 2.4 GHz, velocidades superiores a
500 Mbps.
TABLA 2.1 NORMA 802.11
Para implementar una red WiFi es necesario contar con equipos compatibles con la
norma 802.11, en este caso los puntos de acceso. Los puntos de acceso es un aparato
que cuenta con una o varias antenas que ofrecen cobertura a una WLAN, a este se
podrán conectar diferentes dispositivos y ordenadores. [1]
La seguridad en este tipo de redes se establece mediante los protocolos de cifrado
WEP (Wired Equivalent Privacy-Privacidad Equivalente a Cableado), WPA (WiFi
Protected Access-Acceso Protegido WiFi) y WPA2 (802.11i)
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
12
2.4 REDES CELULARES WWAN
Las redes celulares están constituidas por celdas, las estaciones base (BS) se
encargan de administrar cada una de estas celdas. Los centros de conmutación móvil
controlan toda la red celular. Un transmisor o conjunto de transmisores brindar servicio
a una celda, el tamaño de la celda depende de diferentes factores entre los que se
incluyen la potencia de transmisor, la topología de la región, la sensibilidad del
receptor, tipo de antena, de la posición y altura de la antena transmisora. [3]
2.4.1 RED CELULAR 2G
Sistemas digitales basados en GSM y CDMA (Code Division Multiple Access-Acceso
Multiple por División de Código), son sistemas pensados para la transmisión de voz, en
estos sistemas surge el SMS (Short Message Service-Sevicio de Mensajes Cortos), y
soporta algunas aplicaciones como correo electrónico dada la velocidad de entre 8 y 9
Kbps. [1]
2.4.2 RED CELULAR 2.5 G
Es una red 2G mejorada, su velocidad de transmisión incrementa a 100Kbps y surge
GPRS, gracias al incremento en la velocidad de transmisión soporta conmutación de
paquetes. [1]
2.4.3 RED CELULAR 3G
Las redes 3G alcanzan hasta 2.048 Mbps, soporta conmutación de circuitos y
conmutación de paquetes, esta red representa un esfuerzo por unificar los estándares
de los sistemas móviles, uno de los resultados es la UMTS (Universal Mobile
Telecommunication System- Sistema de Telecomunicación Móvil Universal). [1]
2.4.4 LTE
Esta red alcanza velocidades de bajada de hasta 100Mbps, y 50Mbps de subida. La
tecnología que soporta la cuarta generación es LTE (Long Term Evolution-Evolucion a
largo plazo). Esta tecnología utiliza OFDMA (Orthogonal Frecuency Division Multiple
Access-Acceso Múltiple por División de Frecuencia Ortogonal) en el enlace de subida y
SC-FDMA (Single Carrier Frecuency Division Multiple Access-Acceso Múltiple por
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
13
División de Frecuencia con Portadora Única), las técnicas multiantena MIMO (Multiple
Input Multiple Output-Múltiples Entradas Múltiples Salidas). [3]
La arquitectura LTE divide el sistema en tres elementos
� La red de acceso E-UTRAN (Red de Acceso Evolucionada): todas las
funcionalidades de la red de acceso son realizadas por la estación base
denomindad eNB (envolved Node B- Nodo base envolvente), utiliza una interfaz
S1-U para conectarse al plano de usuario, una interfaz S1-MME para conectarse
al plano de control, y una interface X2 para conectarse con otras eNB.
� La red troncal EPC: Formada por MME (Mobility Management Entity-Entidad de
Administración de movilidad), que gestiona el acceso de los usuarios, S-WG
(Service Gateway-Compuerta de servicio),pasa del plano de usuario a la red
troncal, P-WG (Packet Data Network Gateway-Compuerta de Red),proporciona
conectividad entre LTE y redes externas, y una base de datos denominada HHS
(Home Suscriber Server-Servidore de suscripciones).
� Equipos de usuario: Los diferentes dispositivos móviles conectados a la red.
2.4.5 WIMAX (WORLWIDE INTEROPERABILITY FOR MICROWAVE ACCESS-
INTEROPERABILIDAD UNIVERSAL PARA ACCESOS DE MICROONDAS)
Este es una estándar de comunicación inalámbrica WMAN, basado en la especificación
IEEE 802.16a, esta tiene un alcance de hasta 50 Km con una velocidad de transmisión
de hasta 70 Mbps, esta optimizada para la transmisión de audio y video. [3]
La banda de operación de 802.16a es de entre 2 y 11 GHz, el estándar 802.16e refiere
a terminales en movimiento.
2.4.6 GSM.
GSM se diseñó con el objetivo de incorporar variedad de servicios que incluyen voz y
servicio de manejo de menajes entre unidades móviles. [3]
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
14
Componentes
� MSC (Centro de Conmutación Móvil): establece, gestiona y despeja
conexiones, asigna las llamadas a la célula correcta, proporciona la interfaz
con el sistema telefónico y además calcula los cargos del servicio a los
usuarios.
� Célula: tamaño de aproximadamente 35 Km.
� Unidad móvil: un dispositivo móvil de comunicación.
� BSC (Base Station Controller-Controlador de estaciones base): realiza
operaciones de transferencia de control de llamadas y señales de potencia.
� BTS (Base Trasnreceiver Station-Estación base transceptor): Bajo control de
la BSC, esta establece interfaz a las unidades móviles
� HLR(Home Location Register- Registro de locaciones) : la información de
usuario, sos servicios que se le proveen y su base de suscripción están en
esta base de datos.
� VLR (Visitor Location Register-Registro de locación de visita): base de datos
que contiene el registro del estas encendido o apagado de los dispositivos
móviles.
� AC(Authentication Center-Centro de Validación): Brinda protección a la
identidad de usuario,
� EIR (Equipment Identity Register-Registro de identidad de equipos):
Desempeña funciones de registro de equipo en la estación, desempeña
funciones de bloqueo de llamadas.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
15
FIGURA 2.1 SISTEMA GSM
2.5 ANDROID
Android es un sistema operativo para dispositivos móviles cuya plataforma es libre,
está basado en Linux y es de código abierto. Android inc. fue comprado por Google en
2005, en 2007 se crea el Handset Alliance integrado por Google, Intel, Texas
Instruments, Motorola, T-mobile, Vodafone, Toshiba, entre otros, la cual pretendía
desarrollar estándares abiertos para dispositivos móviles. Es con ello que surge el
Apache V2 que es un resultado de los esfuerzos intelectuales de este grupo y cuya
licencia es de código abierto. En 2008 sale a la venta el primer dispositivo con sistema
operativo Android. [6]
Este sistema operativo no ha sido diseñado para algún hardware en específico, por el
contrario su intención es poder trabajar sobre diferentes tipos de dispositivos móviles,
ya sean teléfonos inteligentes o las denominadas tabletas.
EL desarrollo de aplicaciones para Android está basado en Java, lenguaje que es
ejecutado en una máquina virtual JVM (Máquina Virtual de Java), la cual es
denominada Dalvik y cuyo uso es enfocado en dispositivos móviles, además para el
diseño de la interfaz de usuario se requiere un lenguaje de internet llamado XML. [6]
2.5.1 ARQUITECTURA DE ANDROID Para comprender mejor el funcionamiento de Android, el estudio se divide en diferentes
capas, el diagrama siguiente muestra la estructuración de estas.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
16
FIGURA 2.2 ARQUITECTURA SISTEMA OPERATIVO ANDROID
2.5.2 EL NÚCLEO LINUX El sistema operativo Linux 2.6 forma el núcleo de Android, este proporciona seguridad,
manejo de la memoria, multiprocesos, soporte de controladores para el hardware, y la
pila de protocolos. [6]
2.5.3 RUNTIME DE ANDROID
El hecho de que los dispositivos cuentan con recursos limitados de memoria y de
procesamiento obliga a ejecutar las aplicaciones de Android en una máquina virtual de
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
17
Java denominada Dalvik, la cual es de uso específico de dispositivos móviles. Dalvik
facilita la administración de los recursos de memoria mediante el uso de ficheros
ejecutables en formato .dex, el manejo de memoria a bajo nivel se delega al kernel de
Linux. [6]
Las librerías Core hacen referencia la mayoría de librerías disponibles del lenguaje
Java.
2.5.4 LIBRERÍAS NATIVAS
Estas librerías son compiladas en el código nativo del procesador, están escritas en C
o C++, y algunas son proyectos de código abierto.
Librerías 3D: Estas librerías utilizan los recursos del hardware para gráficos 3D,
basados en OpenGL ES 2.0.
a) Librerías System C: Derivada de la librería de C estándar BSD (Berkeley
Software Distribution-Distribución de Software Berkeley).
b) SSL: Provee servicios de seguridad SSL (secure socket layer).
c) Motor de 2D.
d) Surface Manager: Encargado del control de acceso de los subsistemas de
representación gráfica.
e) Media Framework: Librería encargada de manejar codecs de reproducción y
grabación de diferentes formatos de audio, video e imagen.
f) Webkit: Navegador Android.
g) SQLite: Bases de datos.
h) Freetype: Graficos Vectoriales y Bitmaps.
2.5.5 ENTORNO DE APLICACIÓN
Esta capa permite la integración, interacción, ejecución y utilización de los recursos de
las aplicaciones con el dispositivo, sus servicios son:
a) Sistema de vistas (Views): interfaz gráfica
b) Manejador de actividades (Activity Manager): administra los ciclos de vida de las
aplicaciones y la navegación entre ellas.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
18
c) Proveedores de contenido (Content Providers): Acceso a los recursos de otras
aplicaciones.
d) Manejador de Notificaciones (Notifiaction Manager): Manejo de alertas y
notificaciones.
e) Manejador de recursos (Resources Manager): Acceso a recursos físicos.
2.5.6 APLICACIONES
Todas aquellas aplicaciones instaladas en un dispositivo móvil Android.
Para desarrollar aplicaciones en lenguaje Java es necesario utilizar el SDK (Software
Development Kit).
Para desarrollar aplicaciones en lenguaje C/C++ es necesario utilizar el NDK (Native
development Kit-Paquete de Desarrollo Nativo)
2.5.7 NIVELES DE API (VERSIONES ANDROID)
Las API de Android son las diferentes versiones de la plataforma que han sido
lanzadas desde la aparición de la primer versión Android en 2008, es necesario tener
conocimiento acerca de las propiedades de cada una, ya que existen diferentes clases
y métodos que están disponibles para determinadas versiones, cada desarrollador
tiene que tomar esto en cuenta pues de ello dependen los recursos que utilizara y la
capacidad de su aplicación. Algunas de las versiones de API de Android y sus
características más importantes son las siguientes:
� Android 1.0 Nivel 1: usada solamente en laboratorios, nunca fue lanzada
comercialmente.
� Android 1.1 Nivel 2: solamente se hicieron correcciones a la versión 1 y fue
lanzada en febrero de 2009.
� Android 1.6 Nivel 4 (Donut): lanzada en septiembre de 2009, incorpora la
posibilidad de pantalla multi-táctil, síntesis de texto a voz, soporte para pantallas
WVGA, atributo onClick en XML, soporte para CDMA/EVDO, 802.1x y redes
privadas virtuales.
� Android 2.0 Nivel 5 (Eclair): lanzada en octubre de 2009, incorpora manejador
de bluetooth, Soporte para HTML5 y mejoras en las resoluciones de pantalla,
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
19
mejora la velocidad de hardware, incorpora la clase MotionEvent para controlar
eventos en pantallas multi-táctiles.
� Android 2.1 Nivel 7: lanzada en enero 2010, incorpora la posibilidad de añadir
fondo de pantalla animados, nuevos métodos de manipulación de bases de
datos en internet, visualización de información de la red, manejo del historial de
navegación, geo-localización, mejora la administración del caché web y de
aplicaciones.
� Android 2.2 Nivel 8 (Froyo): lanzada en mayo 2010, nuevo compilador JIT* de
Dalvik, el cual mejora la velocidad, es hasta 5 veces más rápido que el nivel de
API 6, soporte de Adobe flash 10.1, posibilidad de instalar aplicaciones en una
memoria externa, actualización de aplicaciones de forma automática,
incorporación de un motor de JavaScript V8, mejora de la conectividad, Soporte
Wi-Fi IEEE 802.11 para proveer conectividad a otros dispositivos, y soporte de la
API Google maps.
� Android 2.3 Nivel 9 (Gingerbread): lanzada en diciembre de 2010) mayores
tamaños y resoluciones de pantalla (WXGA), Dalvik incorpora un recolector de
basura que mejora la capacidad de respuesta, soporte nativo para Voz sobre IP.
� Android 3.0 nivel 11 (Honeycumb): lanzada en febrero de 2011, soporta
procesadores multi-núcleo y por lo tanto multi-procesos.
� Android 4.1 Nivel 16 (Jelly Bean): lanzada en Julio de 2012, mejora la velocidad
en las interfaces de usuario, mejora la búsqueda por voz, dictado por voz sin
conexión a internet.
� Android 4.3 Nivel 18: Última versión de Android al 28 de Septiembre de 2013,
incorpora entre otras cosas soporte de gráficos OpenGL ES 3.01.
2.6 REQUISITOS PARA DESARROLLO DE APLICACIONES MÓVILES
2.6.1 ECLIPSE
Eclipse es una organización que busca promover y colaborar el desarrollo de software
libre y aplicaciones a código abierto, surge en 2001 como parte de IBM y se constituye
1 Especificación estándar para desarrollo de gráficos 2D y 3D
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
20
en 2004 como organización sin fines de lucro. Basa su modelo en cuatro importantes
segmentos que son: infraestructura de tecnologías de información (IDE Eclipse),
Propiedad intelectual a través del EPL (Licencia pública Eclipse), la cual garantiza que
todos los desarrollo hechos sobre Eclipse serán de código abierto, desarrollo y soporte
a la comunidad, y desarrollo del ecosistema, que refiere a la integración y desarrollo de
la comunidad que utiliza Eclipse.
IDE (Integrated development enviroment-ambiente integrado de desarrollo) Eclipse es
una plataforma de desarrollo de software libre, es soportado por la fundación Eclipse.
El IDE Eclipse for Java Developers se descarga del siguiente enlace:
http://www.eclipse.org/downloads/
FIGURA 2.3 DESCARGA ECLIPSE
2.6.2 ANDROID SDK
El Android SDK (Software Development Kit) proporciona las librerías de los diferentes
niveles de API de Android necesarias para desarrollar, probar y depurar aplicaciones, el
ADT (Kit de desarrollo Android) se descarga directamente de la página oficial de
desarrolladores de Android:
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
21
http://developer.android.com/sdk/index.html
FIGURA 2.4 DESCARGA SDK
2.6.3 JAVA DEVELOPMENT KIT JDK (KIT DE DESARROLLO JAVA)
El JDK es un ambiente de desarrollo que incluye herramientas de desarrollo y pruebas
para programas escritos con Java.
Se puede descargar de forma gratuita del siguiente enlace:
http://www.oracle.com/technetwork/java/javase/downloads/jdk6-jsp-136632.html
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
22
FIGURA 2.5 DESCARGA JDK
Una vez instalado el IDE Eclipse, es necesario instalar los paquetes y librerías
contenidos en el Android SDK Manager.
FIGURA
2.6 INSTALACIÓN SDK EN ECLIPSE
Instalación de los paquetes.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
23
FIGURA 2.7 INSTALACIÓN DE LAS LIBRERÍAS DE DESARROLLO EN ECLIPSE
2.7 COMPONENTES DE UNA APLICACIÓN
2.7.1 VISTA (VIEW) Los elementos que componen una interfaz de usuario, como pueden ser un botón, son
denominadas vistas, son definidas en un fichero XML y son objetos descendientes de
la clase View. [6]
2.7.2 LAYOUT Al igual que las vistas estos son también objetos descendientes de la clase View, estos
son agrupaciones de vistas, existen diferentes formas de agrupar estas vistas, pueden
agruparse de forma lineal, en cuadricula o de forma absoluta. Son definidos en XML. [6]
2.7.3 ACTIVIDAD
Las actividades son cada una d las pantallas de la aplicación, en ellas se definen las
intenciones y eventos de la aplicación, descienden de la clase Activity. [6]
2.7.4 INTENCIONES
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
24
Son el hecho de realizar una acción, como puede ser, lanzar una actividad, solicitar
algún servicio, o comunicarse con un servicio. Las intenciones pueden ser inicializadas
por la misma aplicación (creación de un objeto descendiente de la clase intent) o por el
sistema (navegador). [6]
2.7.5 PROVEEDORES DE CONTENIDO
Manejan el acceso a un conjunto de datos estructurados, encapsulan la información, y
proveen mecanismos de seguridad de datos, son la interfaz estándar que conecta
datos en un proceso con código en ejecución en otro proceso. [6]
2.7.6 RECEPTOR DE ANUNCIOS DE BROADCAST
Recibe anuncios de tipo broadcast como una llamada entrante, o una alarma, no tienen
interfaz de usuario pero si pueden inicializar una actividad.
2.8 DESCRIPCIÓN DE LOS ELEMENTOS DE UN PROYECTO ANDROID
Todo proyecto Android se compone de diferentes elementos, en general este se forma
de un descriptor de proyecto que es denominado Manifiesto Android, un código fuente
escrito en Java y recursos contenidos en diferentes ficheros. Estos elementos se
encuentran en las diferentes carpetas que forman el proyecto y a continuación
mencionaremos.
� src: Esta carpeta contiene los códigos fuente de las diferentes actividades de
nuestra aplicación Android.
� gen: El contenido de esta carpeta es generado automáticamente por el SDK, en
el encontraremos dos carpetas, una de ellas BuildConfig.java y R.java, la
primera define la constante DEBUG, que denota si tu aplicación se encuentra
aún en desarrollo, y la segunda nos proporciona identificadores para poder
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
25
acceder a los recursos desde java, estos contenidos no deben ser modificados
manualmente.
� Android X.X: Archivo .jar que contiene el nivel de API seleccionado.
� Android Dependencies: Este archivo contiene una serie de librerías asociadas a
proyecto.
� assets: Carpeta que contiene ficheros de datos, fuentes, etc., que podrían ser
utilizados por la aplicación.
� bin: En esta carpeta se genera el archivo en .apk, este es el formato de la
aplicación se podrá instalar en los dispositivos móviles, aquí se compila el
código que lo genera.
� libs: en esta carpeta se encuentran las librerías que se utilizan en el proyecto.
� AndroidManifest.xml: Este archivo contiene la descripción del proyecto en el se
declaran los permisos que requiere la aplicación, indicándolos al sistema
operativo, aquí se declaran todas las actividades que intervienen en la
aplicación, también indica las intenciones, servicios, y proveedores de contenido
de la aplicación.
� Ic_launcher-web.png: Esta carpeta contiene el icono de la aplicación, el que
aparecerá en el menú de aplicaciones del dispositivo móvil, es un archivo .png.
� proguard-project.txt: En este fichero se configura la herramienta Proguard, que
nos permite generar un archivo .apk más pequeño.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
26
� default_properties: Este fichero es generado por el SDK y comprueba el nivel de
API.
� res: en esta carpeta se almacenan todos los recursos que utiliza la
aplicación, que van desde imágenes, cadenas de texto, valores de colores,
animaciones, hasta los ficheros que contienen los diferentes layouts en los
que se diseña la interfaz gráfica con XML.
� drawable: Contiene las imágenes en formato .png y .jpg.
� layout: Esta carpeta contiene todos los ficheros XML, en ellos se diseñan las
vistas de la interfaz de usuario.
� menu: Contiene los menús de cada actividad, es un fichero XML.
� values: Este es un fichero XML que contiene los valores de las cadenas de
texto, colores y estilo.
� anim: Fichero XML que contiene animaciones.
� animator: Fichero XML el cual contiene animaciones de propiedades.
� xml: Este fichero contiene archivos XML requeridos por la aplicación.
� raw: Ficheros adicionales.
Estos ficheros se encuentran en el lado izquierdo de la pantalla.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
27
FIGURA 2.8 ELEMENTOS DE UN PROYECTO ANDROID
2.9 MODELO TCP/IP
El modelo TCP/IP es un modelo de referencia para analizar y estudiar las redes de
comunicaciones, fue desarrollado por Vinton Cerf y Robert E. Kahn en los años
setentas. El modelo se divide en 4 capas, esto para facilitar diferentes procesos desde
diseño, hasta identificación de problemas en una red.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
28
Capas del modelo TCP/IP
Capa Nombre
4 Aplicación
3 Transporte
2 Internet
1 Acceso a red
TABLA 2.2 CAPAS TCP/IP
Capa de Acceso a red: Define las características eléctricas, mecánicas, de
procedimiento, y funcionales, para activar, mantener y desactivar un enlace físico para
transmisión de bits entre dispositivos finales. En esta capa se definen niveles de
voltaje, transiciones del voltaje, tasas de transmisión físicas, interfaces físicas,
distancias máximas de transmisión, conectores físicos entre otros aspectos. Define el
formato de los datos para su transmisión y como se controla el acceso al medio físico.
[7]
Capa de Internet : Esta capa provee conectividad y proporciona las rutas de acceso
entre dos host que están geográficamente en redes separadas. Define los esquemas
de empaquetado y direccionamiento, enruta, fragmenta y reensambla paquetes. [7]
Capa de transporte: Segmenta, transfiere y re-ensambla información en la
comunicación individual entre dispositivos finales. Provee comunicación directamente a
los procesos de aplicación que corren en los host. También se encarga de la entrega
confiable, sus protocolos son TCP y UDP. Provee servicios de comunicación directa a
los procesos de aplicaciones que corren en los host. [7]
� TCP (Transmission Control Protocol-Protocolo de Control transmisión):
Protocolo orientado a conexión, es un protocolo confiable de capa de
transporte, para asegurar esta confiabilidad, se asegura que la aplicación se
encuentre lista para recibir información. Durante este proceso se intercambia
información sobre las capacidades del receptor y se acuerdan y se acuerdan
los parámetros iniciales de trasmisión.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
29
Cuando el host transmisor envía datos recibe un número de secuencia, el
receptor responde con un ACK (Acknowledgement-Reconocimiento)
numerado con el siguiente número de secuencia esperado, esto permite al
protocolo identificar cuando los datos se han perdido, duplicado o llegado
fuera de orden. Soporta servicios como Navegadores, Correo electrónico y
transferencia de archivos.
� UDP (User Datagram Protocol-Protocolo de Datagramas de Usuario):
Protocolo no orientado a conexión, no es un protocolo confiable, permite la
perdida de segmentos de información ya que no responde con un ACK, esto
significa interrupciones, es un protocolo Best Effort (Mejor esfuerzo) ya que
realiza su mejor esfuerzo durante la comunicación. Algunos servicios que
soporta este protocolo son VoIP y Video.
Capa de aplicación: Esta capa provee aplicaciones de transferencia de archivos y
actividades de internet, soporta las aplicaciones de red que permiten a los programas
que han sido creados para un sistema operativo en específico, ingresar a la red.
Algunos de sus protocolos son:
� HTTP (Hypertext Transfer Protocol-Protocolo de Transferencia Hipertexto):
Utiliza el puerto 80, define el formato de los mensajes y como son
transmitidos, además de las acciones que los servidores y los navegadores
toman como repuesta a varios comandos, servicio orientado a conexión
(TCP).
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
30
FIGURA 2.9 PETICIÓN HTTP
FIGURA 2.10 RESPUESTA HTTP
El host realiza una petición de la URL mediante Get/Index.html/1.1 el servidor
atiende esta petición y envía los archivos HTML solicitados.
� HTTPS (Secure Hypertext Transfer Protocol-Protocolo de Transferencia
Hipertexto Seguro): Utiliza el puerto 443 implementa además de las
características de protocolos de seguridad como SSL (Secure Socket Layer-
Capa de conexión segura), servicio orientado a conexión (TCP).
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
31
� Telnet: Protocolo para establecer comunicaciones remotas, predecesor de
SSH, envía mensajes en texto claro, utiliza el puerto 23, servicio orientado a
conexión (TCP).
� DNS (Domain Name System-Sistema de Nombre de Dominio): Resuelve
nombres de internet en direcciones IP, utiliza servidores distribuidos para
realizar esta función, utiliza el puerto 53, no orientado a conexión (UDP).
� SNMP (Simple Network Management Protocol-Protocolo Simple de
Administración de Red): Es un protocolo no orientado a conexión (UDP), de
capa de aplicación, que facilita el intercambio de información administrativa
entre dispositivos de red, permite a los administrar el desempeño de la red,
encontrar y solucionar problemas, utiliza el puerto 16.
� FTP (File Transfer Protocol-Protocolo de Transferencia de Archivos):
Protocolo de capa de aplicación orientado a conexión que es usado para
transferir archivos entre dispositivos que lo soporten, utiliza el puerto 21.
2.10 PROTOCOLO SSL
Desarrollado por Netscape en 1994, es utilizado para garantizar la seguridad en el
intercambio de datos entre un navegador y un servidor Web, este protocolo garantiza
confidencialidad, autenticación e integridad. SSL es un protocolo de nivel de transporte
por lo que es usado en el cifrado de protocolo de la capa de aplicación como HTTP. [5]
En el protocolo SSL intervienen dos entidades, un cliente y un servidor, el cliente es
quien inicia la transacción, y el servidor es quien responde y negocia que suite de
cifrado será usada para la encriptación. El navegador funge como cliente y el sitio web
como servidor.
El protocolo SSL utiliza tres protocolos, el protocolo Handshake (Apretón de mano), el
protocolo Record o de Registro y el protocolo Alert (Alerta).
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
32
FIGURA 2.11 ESQUEMA SSL
Figura
La capa de transporte seguro SSL se encuentra divida en dos capas:
• La subcapa superior encargada de negociar los parámetros de seguridad y de
transferir los datos de la aplicación. Tanto los datos de negociación como los de
aplicación se intercambian en mensajes.
• En la subcapa inferior, los mensajes son estructurados en registros, a estos se
les aplica la compresión, la autenticación y el cifrado.
FIGURA 2.12 CAPAS SSL
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
33
2.10.1 PROTOCOLO DE REGISTROS El protocolo de registros SSL es el encargado de formar cada registro, por medio de los
cuales se intercambian información el cliente y el servidor, calcular el MAC (Message
Autenthication Code-Código de Autenticación de Mensajes), cifrar los datos y el
Padding (bytes adicionales) con los algoritmos y las claves que conciernen.
En caso de que en la fase de negociación no se hayan acordado los algoritmos, los
registros no se cifran ni se autentican, entonces se aplican algoritmos nulos. [2]
Registros en SSL
FIGURA 2.13 REGISTROS SSL
El primer campo indica cual es el tipo de contenido de los datos, que puede
Ser: un protocolo de negociación, un mensaje de cambio de cifrado, un mensaje de
error o datos de aplicación.
En el segundo campo hay dos bytes que indican la versión del protocolo.
En el tercer campo se indica la longitud del resto del registro.
En cuarto campo se encuentran los datos, comprimidos en caso de haber acordado
algún algoritmo de compresión.
En el quinto campo se encuentra el código de autenticación (MAC). En el cálculo de
MAC intervienen la clave MAC, un número de secuencia implícito de
64 bits, y el contenido del registro. La longitud de este campo depende del algoritmo de
MAC que se haya acordado utilizar.
Si se ha acordado utilizar un algoritmo en bloque para cifrar los datos, es preciso añadir
bytes adicionales (padding) a cada registro para tener un número total que sea múltiple
de la longitud del bloque.
La técnica que se usa para saber los bytes adicionales que hay es poner al menos uno,
y el valor del último byte siempre indica cuantos otros bytes de padding hay antes (este
valor puede ser 0 si sólo faltaba un byte para tener un bloque entero). [2]
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
34
2.10.2 PROTOCOLO HANDSHAKE (APRETÓN DE MANO)
Este protocolo se encarga de establecer la sesión de comunicación entre el cliente y el
servidor.
• PETICIÓN DE SALUDO (HELLO REQUEST) Este mensaje es enviado por el servidor, cuando un cliente no envía una requisición de
conexión, y le indica al cliente que está listo para comunicarse.
• SALUDO DE CLIENTE (CLIENT HELLO)
El cliente envía este mensaje como petición para establecer conexión, o como
respuesta al mensaje anteriormente mencionado.
Este mensaje contiene como información el protocolo que el cliente quiere utilizar, una
cadena de 32 bytes aleatorios, el identificador de sesión en caso de que el cliente
quiera reestablecer una conexión, la lista de algoritmos de cifrado, algoritmo MAC, y el
método de intercambio de claves.
Algoritmos criptográficos previstos en SSL:
� Cifrado: RC4 (Ron´s Code- Código de Ron), DES (Data Encryption Standard-
Estándar de Encriptación de Datos), Triple DES, RC2, IDEA (International Data
Encryption Algorithm-Algoritmo Internacional de Encriptación de Datos) y
FORTEZZA (este último sólo en SSL 3.0).
� MAC: MD5 y SHA-1.
� Intercambio de claves: RSA (Rivest, Shamir, Adleman), Diffie-Hellman y
FORTEZZA KEA (Key Exhange Algorithm-Algoritmo de intercambio de claves).
Si solamente interesa autenticar la conexión, sin confidencialidad, también se
puede usar el algoritmo de cifrado nulo.
� SALUDO DE SERVIDOR (SERVER HELLO)
El servidor envía como respuesta este mensaje, que contiene:
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
35
� La versión del protocolo que se usará en la conexión, esta versión será igual a la
que envió el cliente, o inferior si esta no es soportada por el servidor.
� Cadena de 32 bytes aleatorios.
� El identificador de la sesión actual, en caso de reestablecer una conexión
anterior el servidor envía el identificador de dicha sesión, pero en caso de no
pretender iniciar dicha sesión el servidor envía uno nuevo, el servidor puede no
enviar este identificador.
� La combinación de algoritmos criptográficos seleccionados por el servidor a
partir de la lista enviada por el cliente. Si se retoma una sesión estas pueden ser
las mismas de la sesión anterior.
� El algoritmo de compresión escogido por el servidor, o el que se utilizó en una
sesión que está siendo retomada.
� En el caso de retomar una sesión anterior, ya con las negociaciones
establecidas, se pasa directamente a la parte de cierre Finished (Termino).
� CERTIfiCADO DE SERVIDOR (CERTIfiCATE) O INTERCAMBIO DE CLAVES DE SERVIDOR
(SERVER KEY EXCHANGE)
El servidor se autentica ante el cliente enviando su certificado, este mensaje contendrá
un certificado X.5092, en caso de que no se cuente con este certificado, se requiere
enviar el mensaje ServerKey Exhange, que contiene los parámetros necesarios a
seguir.
� PETICIÓN DE CERTIFICADO (CERTIFICATE REQUEST)
Este mensaje se envía en caso de requerir la autenticación del cliente, el servidor envía
un Certicate Request, este incluye una lista de los certificados aceptados y los DN
(Distinguish Name-nombres distinguidos) de los CA (Certificate Authorithies-
Autoridades de certificación) que reconoce.
� FIN DE SALUDO DE SERVIDOR (SERVER HELLO DONE)
El servidor envía un mensaje
2 Estándar que específica, entre otras cosas, formatos estándar para certificados de claves públicas y
un algoritmo de validación de la ruta de certificación.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
36
Server Hello Done, para finalizar este saludo.
� CERTIfiCADO DE CLIENTE (CERTIFICATE)
El cliente envía su certificate (certificado), en caso de haber sido requerido por el
servidor.
� INTERCAMBIO DE CLAVES DE CLIENTE (CLIENT KEY EXCHANGE)
El cliente envía un mensaje Client Key Exchange, el contenido de este dependerá de
los métodos acordados con el servidor, en caso de seguir el método RSA, en este
mensaje existe una cadena de 48 bytes de longitud que es usada como secreto pre-
maestro, cifrada con la clave pública del servidor, después el cliente y el servidor
calculan el secreto maestro, que es otra cadena de 48 bytes. Para realizar el cálculo es
necesario aplicar funciones Hash al secreto pre-maestro y a las cadenas aleatorias
enviadas previamente en el intercambio de saludos.
Se obtiene de este proceso dos claves de cifrado simétrico, una para sentido de la
comunicación utilizadas para encriptar datos, además dos claves MAC, de igual forma
una para cada sentido de la comunicación utilizadas para autenticación, y dos vectores
de inicialización para el cifrado en caso de usar un algoritmo en bloque.
� VERIFICACIÓN DE CERTIFICADO (CERTIFICATE VERIFY)
En caso de que el servidor haya solicitado el certificado del cliente, el cliente puede
autenticarse demostrando que posee la clave privada correspondiente mediante un
mensaje Certificate Verify, en este se encuentra contenida la firma generada con la
clave privada del cliente.
� FINALIZACIÓN (FINISHED)
El mensaje Finished sigue inmediatamente la notificación de cambio de cifrado. Su
contenido se obtiene aplicando funciones hash al secreto maestro y a la concatenación
de todos los mensajes de negociación intercambiados, desde el Client Hello hasta el
anterior a este, incluyendo el mensaje Finished de la otra parte, si ya lo ha enviado. En
este punto ya es posible hacer uso de los algoritmos criptográficos negociados, tanto el
cliente como el servidor anuncian el cambio de cifrado con un Cipherspec
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
37
Change(especificación de cambio de cifrado), el cual indica que el siguiente mensaje
enviado será el primero con los nuevos algoritmos y claves
2.10.3 SSL PROTOCOLO DE ALERTA
Este protocolo maneja aquellos paquetes cuestionables, tanto si los detecta el servidor
o el cliente y envía una alerta de error que puede ser de peligro (warning), critica
(critical) o fatal, dado el tipo de alerta la sesión puede ser restringida (warning, critical) o
terminada (fatal), entre estos mensajes se ubican: MAC incorrecto, tipo de mensaje
inesperado, error de negociación, entre otros.
2.11 FUNCIONES DE UNA VÍA Y HASH
Las funciones hash son funciones de un vía que convierten entradas de datos de una
longitud arbitraria (una contraseña, certificado, etc.), denominados pre-imagen, en
salidas de una longitud fija, a través de ellas se podrá computar un resultado de salida
de manera relativamente rápida, pero obtener la entrada a partir del resultado será
prácticamente imposible. [4]
Las funciones de una vía no son protocolos criptográficos, no encriptan información, es
decir no la cifran ni descifran y operan en una sola dirección:
Propiedades de una función hash:
� Cada bit de entrada influye en el bit de salida del resultante.
� Al modificar un bit de entrada, cada bit de salida tiene un 50% de probabilidades
de cambiar.
� No debe ser factible la existencia de colisiones, es decir que
computacionalmente dada una entrada y su resultado hash, encontrar otra que
genere el mismo valor.
Ventajas del uso de funciones hash
� No hay restricción de patentes.
� Excelente relación entrópica entre la entrada y la salida.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
38
� Usadas para calcular claves a partir de entradas de usuario.
� Identifican un documento de manera casi única.
Para referirse a las funciones de hashing criptográfico existen diferentes sinónimos:
Fingerprints (Huellas digitales), message digest (resúmenes de mensaje), MIC
(message integrity check-chequeos de integración de mensaje), o MDC (Manipulation
detection code-Códigos de detección de manipulación).
2.11.1 MAC (MESSAGE AUTHENTICATION CODE-CÓDIGO DE AUTENTIFICACIÓN DE
MENSAJES)
Es una porción de información utilizada para autenticar un mensaje, se calcula
mediante la aplicación de una función hash con clave secreta K, que sólo conocen el
remitente y destinatario, pero no quien pretenda interceptar la comunicación. La función
hash toma dos argumentos, el primero es una clave K de tamaño fijo y un
mensaje M de longitud arbitraria. El resultado es un código MAC de longitud fija. [2]
Función hash que cumple las siguientes condiciones
� El argumento x puede ser de longitud arbitraria y el resultado hk(x) tiene una
longitud de n bits
� Dados h y x es difícil formar un MAC sobre un nuevo mensaje.
El emisor y el receptor comparten una clave secreta k. el emisor aplica el algoritmo
MAC al mensaje para protegerlo y añade la secuencia resultante al mensaje, el
receptor recalcula el MAC y verifica que coincide con el valor transmitido.
� MD2 (Message Digest Algorithm 2,-Algoritmo de Ordenación de Mensajes 2):
Salida de 128 bits, lenta de calcular, orientada a aritmética de 8 bits.
� MD4: Aritmética de 32 bits, resultante de 128 bits, insegura.
� MD5: Es una función hash de 128 bits, que toma como entrada un mensaje
de cualquier tamaño y produce como salida un resumen del mensaje de 128
bits.
� SHA1 (Secure Hash Algorithm 1,-Algoritmo de Hash Seguro 1): Produce una
salida resumen de 160 bits de un mensaje, que puede tener un tamaño
máximo de 264 bits, y se basa en principios similares a los usados MD5.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
39
Capítulo 3
Desarrollo del software
3.1 INTRODUCCIÓN
En este capítulo se detalla proceso de diseñar y desarrollar el prototipo de aplicación
móvil de promoción turística para el municipio de Ocuilan en el estado de México para
sistema operativo Android, el diseño de las interfaces gráficas a través de los ficheros
XML, el código fuente de las actividades y los métodos necesarios para relacionarlos
con su respectivo layout.
Se mencionan los requisitos necesarios para obtener una clave que permita utilizar los
servicios de Google maps, el uso de las diferentes librerías que esta requiere, y se
describen los métodos utilizados dentro de cada actividad.
Se detalla la estructuración del manifiesto Android, los permisos requeridos para
utilizar los servicios de la API V2 de Google maps, y la declaración de cada una de las
actividades.
Se describe la estructura general de la aplicación y los ciclos de vida de las actividades
basadas en la función que desempeñan estas en la aplicación.
Se describe el proceso de comunicación que ejecuta la aplicación para poder tener
acceso a los servicios de Google Maps, a nivel de capa de aplicación.
3.2 CREACIÓN DE UN NUEVO PROYECTO PARA EL DESARROLLO DE UNA
APLICACIÓN ANDROID
Una vez instalados todos los elementos del IDE Eclipse y el SDK, se puede comenzar
el desarrollo de aplicaciones. Para empezar es necesario crear un nuevo proyecto
Android para lo cual se sigue la ruta: File > New > Android Aplication Project.
Aparecerá una ventana en la cual se debe ingresar el nombre a la aplicación, un
nombre de paquete, y además especificar la versión mínima de Android sobre la cual
correrá la aplicación, para este caso se selecciona el API nivel 8, ya que es el mínimo
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
40
que soporta Google maps. El objetivo de la aplicación será siempre la última versión de
API disponible que este caso es el nivel 18, mismo con el que es compilado, no se
escogerá ningún tema de interfaz.
FIGURA 3.1 NUEVO DESARROLLO ANDROID ECLIPSE
Se selecciona la opción de crear un icono de aplicación o ic_launcher y de crear una
actividad. Se selecciona además la locación del proyecto.
FIGURA 3.2 SELECCIÓN CARACTERÍSTICAS INICIALES PROYECTO ANDROID
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
41
En la siguiente ventana se crea un icono de aplicación denominado ic_launcher.
FIGURA 3.3 SELECCIÓN LOGO DE APLICACIÓN
En la siguiente ventana se selecciona la primera opción que es la opción que permite
personalizar los detalles de la actividad.
FIGURA 3.4 CREACIÓN ACTIVIDAD
En la siguiente ventana se asigna nombre a la primer actividad o actividad principal, y
se escoge el tipo de navegación que para este caso será ninguno ya que todas estas
características serán modificadas manualmente.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
42
FIGURA 3.5 NOMBRE ACTIVIDAD PRINCIPAL
Finalizado este proceso se puede observar cómo se han creado todos los elementos
de la aplicación sobre los cuales se puede comenzar el desarrollo del proyecto.
FIGURA 3.6 PROYECTO ANDROID
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
43
3.3 DISEÑO DE UNA INTERFAZ DE USUARIO.
3.3.1 RELATIVELAYOUT Como fue mencionado previamente el diseño de las interfaces de usuario se hace
sobre el lenguaje XML, para ello es necesario modificar los ficheros contenidos en: res
> layout, se requiere de un fichero de este tipo por cada actividad.
El primero fichero tendrá por default un tipo de layout de tipo relativelayout como se
puede observar en la siguiente figura:
CÓDIGO 3.1 DISEÑO INTERFAZ DE USUARIO
Las propiedades de este son el ancho, largo de la pantalla, las cuales de acuerdo al
código son ajustadas al tamaño de la pantalla, además de que esta referenciado a la
actividad principal.
Para asignar un fondo de pantalla es necesario utilizar el atributo:
CÓDIGO 3.2 SELECCIÓN DE IMAGEN DE FONDO PARA ACTIVIDAD
Donde la primera característica del elemento indica que se trata de una imagen, y
“porta” es el nombre de la imagen que se encuentra guardada en la carpeta res, en uno
de los ficheros dependiendo el tamaño de la imagen.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
44
FIGURA 3.7 VISTA DE ACTIVIDAD
3.3.2 IMAGEBUTTON Para añadir un botono con imagen es necesario que este elemento sea hijo de
RelativeLayout.
CÓDIGO 3.3 BOTÓN DE IMAGEN
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
45
La línea android:id asigna un identificador al elemento, los siguientes dos parámetros
se refieren al largo y ancho, pero denotan que se ajusta al tamaño de la imagen. Las
siguientes tres líneas de código denotan la alineación del elemento dentro de la
pantalla y sus referencias con otros elementos, además de la distancia de márgenes en
pixeles, pero estos parámetros dependen de su alienación con respecto de otros
elementos. La propiedad Android:backgroud hace referencia a los elementos que
gráficamente están detrás del botón, en este caso es trasparente, pero puede ponerse
otra imagen o rellenarse de algún color. El elemento más importante es la propiedad
Android:onClick, ya que esta propiedad servirá para identificar este elemento a la hora
de asignarle un evento en una actividad.
Es posible realizar el diseño y ubicar mejor la distribución de los elementos haciendo
uso de la interfaz gráfica del IDE Eclipse.
FIGURA 3.8 DISEÑO INTERFAZ DE USUARIO APLICACIÓN OCUILAN
3.3.4 TEXTVIEW Para introducir texto dentro de un layout se requiere del elemento textview, el cual
estará contenido dentro de RelativeLayout.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
46
CÓDIGO 3.4 DISEÑO INTERFAZ USUARIO
Entre las propiedades importantes que se encuentran en este elemento está
android:tex”, el cual hace referencia a una cadena de texto, la cual se encuentra
contenida en el fichero values > strings, y que contiene el valor del texto presentado en
el elemento. La propiedad Android:textColor asigna el color de letra, igualándolo a su
equivalente en el código de colores XML.
3.3.5 HORIZONTALSCROLLVIEW Este elemento proporciona interacción con la pantalla de manera horizontal, en este
caso esta propiedad es utilizada para para agregar una galería de imágenes, dentro de
esta hay un LinearLayout con orientación horizontal, y dentro de este todos los
elementos que se mostraran a través de esta propiedad.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
47
CÓDIGO 3.5 CÓDIGO XML INTERFAZ DE USUARIO
Pantalla
FIGURA 3.9 DISEÑO DE UNA GALERÍA DE IMÁGENES CON XML
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
48
3.3.6 CREACIÓN DE CADENAS DE TEXTO Todas las cadenas de texto que aparecen en la aplicación deben ser debidamente
dadas de alta e indicadas en el fichero values > strings. Esto se hace de la siguiente
manera:
CÓDIGO 3.6 CADENAS DE TEXTO
3.4 ACTIVIDADES Y EVENTOS
A través de las actividades se tiene manejo de los elementos de los diferentes layouts,
estas se relacionan con un fichero XML, y se pueden manejar eventos.
A continuación se muestra el contenido de la actividad GGaleria.
CÓDIGO 3.7 CÓDIGO FUENTE ACTIVIDAD
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
49
La primer línea denota el nombre el paquete al cual pertenece, después muestra las
bibliotecas que requiere, la clase GGaleria hereda de la clase Activity e implementa el
método onCreate para relacionar la actividad con el archivo XML ggaleria, el cual
contiene la interfaz de usuario.
El segundo método menu3()) refiere a un botón, este tendrá que ser manejado por un
evento que será un click del usuario, en ese momento tendrá que abrir otra actividad, al
ser pulsado el botón con el identificador respectivo al atributo onCreate del archivo
XML, que tiene que coincidir con el nombre del método, abrirá la actividad denotada, en
este caso el nombre del identificador es menu3 y la actividad que abre es la actividad
principal MainActivity.
3.4.1 CLASE WEBVIEW
La clase WebView permite incluir una vista sobre el contenido web de una página en
especial, en este caso es utilizada para requerir la visualización de la página oficial de
municipio de Ocuilan de Arteaga.
CÓDIGO 3.8
3.5 MANIFIESTO ANDROID
El manifiesto Android es un fichero XML que contiene la descripción de la aplicación,
los recursos que utiliza, y los permisos que requiere.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
50
CÓDIGO 3.9 MANIFIESTO ANDROID
En primer lugar denota el nombre del paquete, la versión de la aplicación que es, en
este caso es la primera versión, hace referencia al nivel de API al que va dirigido y a la
versión mínima de SDK, dentro de application se dan de alta todas las actividades de la
aplicación, dentro de la aplicación que será la primera pantalla de la aplicación esta
contenido intent-filter, en el cual se hace referencia que dicha actividad es la principal y
la primera una vez en ejecución.
3.6 FIRMA DE APLICACIONES
Para firmar aplicaciones es necesario una firma de desarrollador, esto identificara cada
aplicación, el procedimiento para obtenerla es el siguiente:
Click derecho sobre el proyecto Android Tools > Export Signed Application Package.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
51
FIGURA 3.10 FIRMA DE APLICACIONES
Se selecciona el proyecto a firmar.
FIGURA 3.11 SELECCIÓN DE PROYECTO
Se selecciona la opción Create new Keystore, esta será la llave de desarrollador que
identificar los proyectos desarrollados bajo la misma firma.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
52
FIGURA 3.12 CREACIÓN CLAVE DE DESARROLLADOR
Se introduce un alias, el tiempo de validez del Keystore debe ser de al menos 25 años.
FIGURA 3.13 CREACIÓN CUENTA DESARROLLADOR
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
53
Se concluye el proceso indicando el destino del archivo generado, que es un archivo
APK, el cual puede ser instalado y probado en un dispositivo móvil real.
FIGURA 3.14 SELECCIÓN DE UBICACIÓN CLAVE DESARROLLADOR
Adicionalmente se obtendrán dos certificados el SHA1 y el MD5.
3.7 GOOGLE MAPS API V2
El API de Google maps V2 permitirá tener acceso a los mapas de Google. Existen una
serie de requisitos necesarios para poder tener acceso a estos servicios, los cuales se
detallaran a continuación.
Tener una llave de desarrollador y un certificado SHA1
Ingresar a https://code.google.com/apis/console/
Contar con una cuenta de Google, registrar el proyecto, y dar de alta el servicio de
Google Maps Android API V2.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
54
FIGURA 3.15 CONSOLA DE API DE GOOGLE
Generar una nueva llave para tener acceso a los servicios de Google, seleccionando
API Access y después Generate new key.
FIGURA 3.16 API KEY GOOGLE MAPS
Se ingresa el SHA1, separado por un punto y como, y después el nombre del paquete,
este será la clave MAC con la que la aplicación se autenticara al servidor una vez que
requiera los servicios de Google Maps.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
55
FIGURA 3.17 GENERACIÓN DEL API KEY
Se genera una clave llamada API KEY que debe ser utilizada cuando se requieran los
servicios de mapas en una aplicación, en este caso la consola de APIs de Google tiene
el papel de autoridad certificadora (CA). Esta clave solo podrá ser utilizada con el
paquete especificado.
FIGURA 3.18 API KEY PROPORCIONADA POR GOOGLE.
Esta clave se coloca dentro del manifiesto Android, dentro de application:
CÓDIGO 3.10 API KEY Y MANIFIESTO ANDROID
Se dan de alta los siguientes permisos:
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
56
CÓDIGO 3.11 PERMISOS MANIFIESTO ANDROID REQUERIDOS PARA SOPORTAR GOOGLE MAPS
En los primeros dos permisos se coloca el nombre del paquete seguido de
.permission.MAPS_RECEIVE, este permiso permite tener acceso a mapas, el siguiente
permiso refiere al uso de internet por parte de la aplicación. Con el permiso
ACCES_NETWORK STATE se puede conocer el estado de la red, el siguiente permiso
hace referencia al uso de mapas, READ_GSERVICES definido para poder utilizar los
servicios de Google, y WRITE_EXTERNAL_STORAGE hace referencia a escribir en
almacenamiento externo.
El siguiente requisito es tener instalado la biblioteca de Google Play services e importar
dicho elemento al espacio de trabajo.
Esta biblioteca contiene todas las herramientas para implementar las APIs de Google.
FIGURA 3.19 INSTALACIÓN GOOGLE PLAY SERVICES
FIGURA 3.20 ESPACIO DE TRABAJO
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
57
En el paquete de la aplicación se da click derecho > properties > Android, y se añade la
librería de Google Play Services.
FIGURA
3.21 ADICIÓN DE PROPIEDADES DE GOOLGLE PLAY SERVICES AL PROYECTO OCUILAN
Una vez que se cumplen los requisitos para utilizar la API V2 de Google Maps, se
puede aplicar a una actividad.
Implementación de Google maps en una actividad.
CÓDIGO 3.12 MÉTODOS EN JAVA PARA SOPORTAR GOOGLE MAPS
Se incorpora la librería SupportMapFragment, que permite hacer a la aplicación
compatible con los niveles de API 8 en adelante, además de otras librerías para el
control de cámara, la librería LatLng permite establecer una posición en coordenadas,
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
58
la librería BitmapDescriptorFactory permite utilizar la clase FragmentActivity, esta
permitirá visualizar los mapas de Google, la librería MarkerOptions permite añadir
marcadores al mapa, la librería Googlemap permite tener acceso a los mapas de
Google.
La clase Mapin hereda de FragmentActivity, el método onCreate inicializa la actividad y
la relaciona con su respectivo layout, el método SupporMapFragment inicializa el mapa
y lo relaciona con el elemento map, el cual está definido en el layout, el método LatLng
establece una posición en el mapa de acuerdo a las coordenada del municipio de
Ocuilan de Arteaga.
Para añadir marcadores se utilizan los métodos siguientes.
CÓDIGO 3.13 MÉTODO PARA MARCACIÓN DE POSICIONES EN GOOGLE MAPS
En este método se define la opción de marcar una posición en el mapa, asignándole
como propiedades una imagen, un título descriptivo, y añadiendo una posición en
coordenadas, previamente establecida en la clase LatLng.
CÓDIGO 3.14 COLOCACIÓN DE
COORDENADAS PARA MARCADORES EN GOOGLE MAPS
El diseño del layout requiere incluir el elemto fragment, que a nivel de interfaz de
usuario permite la visualización de los mapas de Google.
CÓDIGO 3.15 FRAGMENT EN XML
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
59
En este se hace referencia a la clase SupportMapFragment, la cual permite que la
aplicación sea compatible con los niveles de API 8 en adelante.
El resultado es el siguiente:
FIGURA 3.22 VISTA DE LA ACTIVIDAD QUE SOPORTA GOOGLE MAPS
Este layout no se podrá visualizar en la interfaz de usuario del IDE Eclipse.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
60
3.8 Estructura General de la aplicación
FIGURA 3.23 DIAGRAMA DE ACTIVIDADES DE LA APLICACIÓN
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
61
3.9 CICLOS DE VIDA DE LAS ACTIVIDADES EN LA APLICACIÓN
FIGURA 3.24 CICLO DE VIDA DE LAS ACTIVIDADES DE LA APLICACIÓN
El diagrama anterior muestra los ciclos de vida de las diferentes actividades, desde el
lanzamiento de la actividad principal, cuando el método onCreate() propio de esta
actividad relaciona la clase con el layout , después dependiendo de los eventos que
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
62
sean realizados por el usuario, la aplicación recurrirá a los métodos que inicialicen las
siguientes actividades con sus propios métodos que direccionan a otras actividades.
En la actividad Vid, el método onCreate() la relacionara con su layout, pero si el usuario
permanece y selecciona opciones de esta actividad que es un enlace a una página
web, la aplicación saltara al navegador del dispositivo móvil.
3.10 DESCRIPCIÓN DE LAS ACTIVIDADES DE LA APLICACIÓN
Nombre actividad Descripción
MainActivity Actividad principal, contiene métodos
que abren otras actividades.
Mapin Contiene un SupportMapFragment que
permite acceder al servicio de mapas
de Google, además de métodos que
añaden marcadores al mapa y lo
sitúan en una posición especifica.
Vid Contiene un método WebView que nos
permite visualizar la página oficial del
municipio de Ocuilan.
GGaleria Contiene una galería que en su archivo
XML funciona con un scrollview.
Zempoala Contiene un textview con la
descripción de las lagunas de
Zempoala, y métodos que abren otras
actividades
santorin Contiene un textview con la
descripción de las lagunas del
Santuario del Señor de Chalma, y
métodos que abren otras actividades
TABLA 3.1 DESCRIPCIÓN DE LAS ACTIVIDADES DE LA APLICACIÓN
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
63
3.11 COMUNICACIÓN DE LA APLICACIÓN MÓVIL
La aplicación requiere una conexión a Internet ya que requiere servicios que son
provistos por servidores web, esta conexión puede ser a través de tecnologías de
comunicaciones inalámbricas como pueden ser Wi-Fi, 3G, 4G o WiMax.
Uno de los servicios que requiere la aplicación es el de Google Maps, cuyo proveedor
es Google, y el otro es el contenido de la página web del municipio de Ocuilan de
Arteaga.
El servicio de mapas de Google es requerido a través de la API V2 Google Maps, la
cual hace una conexión al puerto 443, correspondiente a HTTPS, con una API Key
como clave obtenida en la plataforma de Google, que le permitirá tener acceso a este
servicio, el servidor responderá esta requisición enviando los archivos HTML. De no
contar con la API KEY adecuada el servidor no responderá esa requisición.
3.10.1 COMUNICACIÓN POR CAPAS Capa Proceso
Aplicación HTTP y HTTPS
Transporte TCP y SSL
Internet Sistema Celular (3G, 4G, WiMax) o Wi-
Fi (802.11)
La interfaz física es el espacio libre.
Acceso a Red
TABLA 3.2 COMUNICACIÓN POR CAPAS
En las capas de acceso a red e Internet, el dispositivo móvil establece la conexión a
internet ya sea por medio de Wi-Fi (802.11) o a través la red celular (3G, 4G o WiMax)
de un proveedor de servicios, siendo su interfaz física el aire o espacio libre.
En las capas de transporte y aplicación se estable comunicación orientada a conexión
dependiendo de los requisitos del usuario en la aplicación móvil, ya sea al puerto 80 de
HTTP cuando solicita la página web del municipio de Ocuilan, o al puerto 443 de
HTTPS cuando solicita el servicio de Google Maps a través del API V2 Google Maps,
utilizando el protocolo SSL.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
64
FIGURA 3.25 DIAGRAMAS DE COMUNICACIÓN GENERAL DE LA APLICACIÓN MÓVIL.
3.10.2 COMUNICACIÓN A NIVEL CAPA DE TRANSPORTE Y APLICACIÓN Se establece una conexión TCP, tanto para el caso de acceder al servicio de Google
Maps, como para acceder al servicio de la página web del municipio de Ocuilan.
En el caso de solicitar los servicios de mapas, la conexión requiere llevar a cabo el
protocolo SSL, como se muestra a continuación.
Etapa Proceso
Hello Request Servidor envía una requisición de
saludo indicando que está listo.
Client Hello El cliente (Dispositivo móvil) envía este
mensaje como petición para establecer
conexión y envía su lista de algoritmos
criptográficos disponibles, entre los
que envía RSA y un SHA1 como MAC.
Server Hello Servidor envía protocolo, algoritmos
criptográficos a utilizar e Identificador
de sesión (ID).
Servidor envía su certificado Servidor se autentica con el cliente,
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
65
certificado X.509.
Certificate Request Servidor requiere autenticación de
cliente.
Server Hello Done Fin del saludo del servidor.
El cliente envía su certificado El cliente envía el API Key.
Client Key Exchanges Se obtiene de este proceso dos claves
de cifrado simétrico, una para sentido
de la comunicación utilizadas para
cifrar datos, además dos claves MAC,
de igual forma una para cada sentido
de la comunicación utilizadas para
autenticación.
Estas a partir de los métodos
acordados con el servidor, entre ellos
RSA, en este mensaje existe una
cadena de 48 bytes de longitud que es
usada como secreto pre-maestro,
cifrada con la clave pública del
servidor, después el cliente y el
servidor calculan el secreto maestro,
que es otra cadena de 48 bytes. Para
realizar el cálculo es necesario aplicar
funciones Hash al secreto pre-maestro
y a las cadenas aleatorias enviadas
previamente en el intercambio de
saludos.
Certificate Validate Mediante un mensaje Certificate Verify
el cliente puede autenticarse
demostrando que posee la clave
privada correspondiente.
Finished El servidor anuncia el cambio de
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
66
TABL
A 3.3
HAN
DSHA
KE
SSL
FIGURA 3.26 ESQUEMA DE HANDSHAKE ENTRE EL CLIENTE Y EL SERVIDOR
Una vez establecida la sesión entre el cliente y el servidor se procede a realizar la
conexión al puerto 443 correspondiente a la aplicación HTTPS, el servidor HTTPS
enviara los archivos HTML de manera similar a HTTP como se explica a continuación.
Cuando la aplicación accede a la actividad que contiene la clase WebView, esta realiza
una conexión al puerto 80 correspondiente a HTTP, y requisita la URL de la página del
municipio de Ocuilan, este servidor responderá la requisición enviando los archivo
HTML.
cifrado con un Cipherspec Change
(especificación de cambio de cifrado),
el cual indica que el siguiente mensaje
enviado será el primero con los nuevos
algoritmos y claves.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
67
Diagrama Comunicación entre el dispositivo móvil y el servidor HTTPS
FIGURA 3.27 INTERCAMBIO HTTP
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
68
Capítulo 4
Pruebas y publicación de aplicaciones en una tienda virtual.
4.1 INTRODUCCIÓN
En este capítulo se describen las pruebas hechas a la aplicación en diferentes
dispositivos móviles tanto reales como virtuales, y se muestran los resultados. También
se describe el procedimiento para publicar una aplicación móvil en la tienda de
aplicaciones de Google llamada Play Store.
4.2 REQUISITOS DE INSTALACIÓN
� Desde el dispositivo móvil, permitir la instalación de paquetes de origen
desconocido.
� Nivel de API 8 o superior en el dispositivo.
4.3 PRUEBAS VIRTUALES El primer paso para probar una aplicación móvil en un dispositivo virtual en el IDE
Eclipse es instalar los dispositivos virtuales a través del SDK. Para ello es necesario
seguir la ruta window > Android Virtual Device Manager. En esta sección se puede
instalar un dispositivo virtual previamente cargado por el SDK o manualmente crear un
nuevo dispositivo.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
69
FIGURA 4.1 SELECCIÓN DISPOSITIVO VIRTUAL
Para probar una aplicación en un dispositivo virtual es necesario seguir la ruta run >
debug configurations.
FIGURA 4.2 SIMULACIÓN
Se selecciona el dispositivo con el que se va a realizar la prueba, en este caso será un
dispositivo Nexus con sistema Android 4.1.2, nivel 16 de API seguido de Apply.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
70
Características del dispositivo virtual
Dispositivo Nivel de API Resolución de pantalla
Nexus S Android 4.1.2 Nivel 16 400*800 WVGA
TABLA 4.1 CARACTERÍSTICAS DEL DISPOSITIVO VIRTUAL
Se selecciona el dispositivo previamente instalado y se podrá visualizar el dispositivo
simulado.
FIGURA 4.3 SIMULACIÓN DISPOSITIVO VIRTUAL
FIGURA 4.4 VISTA ACTIVIDAD PRINCIPAL
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
71
.
FIGURA 4.5 VISTA GALERÍA
FIGURA 4.6 VISTA ACTIVIDAD ZEMPOALA
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
72
FIGURA 4.7 VISTA DE ACTIVIDAD SANTUARIO DEL SEÑOR DE CHALMA
Vista de la actividad que contiene el mapa. Esta actividad no se puede visualizar en el
emulador, ya que el dispositivo virtual no cuenta con el servicio de Google play
Services instalado.
FIGURA 4.8 VISTA ACTIVIDAD QUE RECIBE LOS SERVICIOS DE GOOGLE MAPS
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
73
FIGURA 4.9 VISTA ACTIVIDAD QUE RECIBE LOS SERVICIOS DE LA PÁGINA OFICIAL DEL MUNICIPIO DE OCUILAN
4.4 PRUEBAS Y RESULTADOS EN DISPOSITIVOS REALES
El único requisito para instalar la aplicación en un dispositivo móvil real, además de los
mencionados anteriormente, es que en el dispositivo se ingrese a la configuración se
permita la instalación de aplicaciones de origen desconocido, es decir que no sean
descargadas de Play Store3.
Dispositivos sobre los que se hicieron las pruebas y características.
Dispositivo Nivel de API Resolución de
pantalla
Internet
Sony Ericcsson
Xperia neo V
Android 2.3
Nivel 9
854 x 480
WVGA
Samsung S III
mini
Android 4.1
Nivel 16
400*800 WVGA 802.11/3G
TABLA 4.2 CARACTERÍSTICAS DE LOS DISPOSITIVOS DE PRUEBAS
3 Tienda virtual de aplicaciones Android.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
74
Resultados Sony Ericcsson Xperia neo V
FIGURA 4.10 RESULTADOS EN XPERIO NEO V
En los resultados se puede observar que la aplicación corre perfectamente, los gráficos
solo difieren un poco en la distribución original, pero esto es debido al tamaño de la
pantalla.
La actividad correspondiente al uso del servicio de mapas de Google, trabaja a la
perfección y la actividad que enlaza a la página web del municipio lo hace de la misma
forma.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
75
Resultados Samsung S III mini
FIGURA 4.11 RESULTADOS EN SAMSUNG S III MINI
La distribución de la aplicación es la ideal ya que se acomoda perfectamente, ya que al
momento de diseñar la aplicación se considera el tamaño de pantalla correspondiente
al de este modelo de dispositivo, la funcionalidad no presenta ningún problema.
Es necesario el acceso a Internet para la visualización de mapas y del enlace a la
página del municipio de Ocuilan.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
76
4.5 PUBLICAR APLICACIONES EN UNA TIENDA VIRTUAL
Una vez que se tiene lista una aplicación para ser lanzada al mercado, esta debe ser
cargada en una plataforma en línea para su venta, esta plataforma es Play Store. Para
poder subir una aplicación se requiere ingresar a la consola de desarrolladores de
Google Play, cuya dirección es http://guiasdeldia.com/2013/01/21/como-subir-aplicaciones-
a-google-play-store/ .
FIGURA 4.12 PÁGINA GOOGLE PLAY
� Acceder a la consola de desarrollador google play, firmar con la cuenta de
Gmail, o crear una nueva cuenta.
� Aceptar términos y condiciones.
� Es necesario realizar un pago, este será único y la única opción de hacerlo es a
través de una cartera electrónica de Google.
� Llenar un formulario con información personal.
� Cargar archivo APK, se incluyen los datos del programador, una descripción de
la aplicación, un icono de aplicación, y esta no debe exceder los 50 Mb.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
77
Capítulo 5
Conclusiones
El desarrollo de este proyecto implico la utilización de diferentes herramientas
computacionales como los paquetes de desarrollo de aplicaciones de Android y las
librerías que este incluye, además requirió conocimientos de programación en lenguaje
Java y el lenguaje de Internet XML.
Al realizar el desarrollo del código fuente en Java se asimila que la aplicación una vez
instalada en un dispositivo móvil con sistema operativo Android será ejecutada en una
máquina virtual denominada Dalvik.
La comunicación que ejecuta la aplicación a la hora de requerir los servicios de Google
Maps y el acceso a la página web se realizan en las capas de transporte y aplicación
del modelo TCP/IP, a través de dos protocolos de capa de aplicación que son HTTP y
HTTPS.
En el caso del uso de HTTPS, este es utilizado cuando la aplicación requiere los
servicios de Google Maps, para ello es necesario realizar la comunicación por medio
del protocolo SSL, que es un protocolo de conexiones seguras, y para ello es necesario
contar una clave privada, obtenida a través de la consola de API de Google, con la cual
el dispositivo móvil participante de la comunicación como cliente podrá autenticarse con
el servidor de Google Maps en el protocolo de estrecho de manos y entablar una
conexión segura.
El presente proyecto promueve la difusión de lugares turísticos, en específico el
municipio de Ocuilan de Arteaga, cuyos recursos son limitados, ya que representa un
medio de publicidad a bajo costo y cuyo mercado potencial es muy grande.
Esta iniciativa forma parte de un proyecto para constituir una empresa social, cuyo
objetivo es mejorar las condiciones de vida de la población de sitios potenciales
turísticos a través de la difusión en aplicaciones móviles del acervo cultural y social de
estas comunidades, es un objetivo del autor que este trabajo sea retomado por
alumnos u organizaciones que pretendan generar un impacto en la población rural.
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
78
Bibliografía
[1] Julio Gómez López, “Guía de Campo Wi-Fi”, Alfaomega 2008.
[2] Juan F. Puentes Calvo, “Principios de seguridad en el comercio electrónico”,
Alfaomega 2009.
[3] José Manuel Huidobro “Comunicaciones Móviles” Alfaomega 2013.
[4] Ariel Maiorano, “Criptografía”, Alfaomega 2009.
[5] Álvaro Gómez Vieitez, “Enciclopedia de la seguridad electrónica”,
[6] Jesús Tomas Girones, “El Gran libro de Android”, AlfaOmega 2012.
[7] CISCO, “CISCO ICND1 Vol. 1 Student Guide”, CISCO 2013.
[8] Fujitsu “Hardware Platform Supporting Smartphones” Fujitsu.
[9] Toru Ogawa, “The Cortex A9 Cortex-A9 Processors”, ARM.
[10] http://www.forbes.com.mx/sites/900-millones-de-telefonos-tienen-android-
google/
[11] http://www.android.com/
[12] http://developer.android.com/index.html
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
79
Lista de figuras
Figura 1.1 Arquitectura Teléfono inteligente Fujitsu ................................................................................... 5
Figura 1.2 Procesador de Aplicación Fujitsu ................................................................................................ 6
Figura 1.3 Arquitectura Microprocesador ARM ........................................................................................... 7
Figura 2.1 Sistema GSM ............................................................................................................................. 15
Figura 2.2 Arquitectura Sistema Operativo Android.................................................................................. 16
Figura 2.3 Descarga ECLIPSE ...................................................................................................................... 20
Figura 2.4 Descarga SDK ............................................................................................................................. 21
Figura 2.5 Descarga JDK ............................................................................................................................. 22
Figura 2.6 Instalación SDK en ECLIPSE ....................................................................................................... 22
Figura 2.7 Instalación de las librerías de desarrollo en ECLIPSE ................................................................ 23
Figura 2.8 Elementos de un proyecto Android .......................................................................................... 27
Figura 2.9 Petición HTTP ............................................................................................................................ 30
Figura 2.10 Respuesta HTTP ....................................................................................................................... 30
Figura 2.11 Esquema SSL ............................................................................................................................ 32
Figura 2.12 Capas SSL ................................................................................................................................. 32
Figura 2.13 Registros SSL............................................................................................................................ 33
Figura 3.1 Nuevo Desarrollo Android ECLIPSE ........................................................................................... 40
Figura 3.2 Selección características iniciales proyecto ANDROID .............................................................. 40
Figura 3.3 Selección Logo de Aplicación .................................................................................................... 41
Figura 3.4 Creación Actividad..................................................................................................................... 41
Figura 3.5 Nombre actividad principal ....................................................................................................... 42
Figura 3.6 Proyecto ANDROID .................................................................................................................... 42
Figura 3.7 Vista de actividad ...................................................................................................................... 44
Figura 3.8 Diseño interfaz de usuario aplicación Ocuilan .......................................................................... 45
Figura 3.9 Diseño de una galería de imágenes con XML ............................................................................ 47
Figura 3.11 Firma de aplicaciones .............................................................................................................. 51
Figura 3.12 Selección de proyecto ............................................................................................................. 51
Figura 3.13 Creación clave de desarrollador .............................................................................................. 52
Figura 3.14 Creación cuenta desarrollador ................................................................................................ 52
Figura 3.15 Selección de ubicación Clave desarrollador ............................................................................ 53
Figura 3.16 Consola de API de GOOGLE ..................................................................................................... 54
Figura 3.17 API Key GOOGLE Maps ............................................................................................................ 54
Figura 3.18 Generación del API KEY ..................................................................................................... 55
Figura 3.19 API KEY proporcionada por GOOGLE ...................................................................................... 55
Figura 3.20 Instalación GOOGLE Play Services ........................................................................................... 56
Figura 3.21 Espacio de trabajo ................................................................................................................... 56
Figura 3.22 Adición de propiedades de GOOLGLE Play services al proyecto Ocuilan ............................... 57
Figura 3.23 Vista de la actividad que soporta GOOGLE MAPS ................................................................... 59
Figura 3.24 Diagrama de Actividades de la aplicación ............................................................................... 60
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
80
Figura 3.25 Ciclo de vida de las actividades de la aplicación ..................................................................... 61
Figura 3.26 Diagramas de comunicación general de la aplicación móvil................................................... 64
Figura 3.27 Esquema de handshake entre el cliente y el servidor............................................................. 66
Figura 3.28 Intercambio HTTP .................................................................................................................... 67
Figura 4.1 Selección Dispositivo virtual ...................................................................................................... 69
Figura 4.2 Simulación ................................................................................................................................. 69
Figura 4.4 Simulación dispositivo virtual ................................................................................................... 70
Figura 4.5 Vista Actividad principal ............................................................................................................ 70
Figura 4.6 Vista Galería .............................................................................................................................. 71
Figura 4.7 Vista Actividad Zempoala .......................................................................................................... 71
Figura 4.8 Vista de Actividad Santuario del Señor de Chalma ................................................................... 72
Figura 4.9 Vista Actividad que recibe los servicios de GOOGLE Maps ....................................................... 72
Figura 4.10 Vista Actividad que recibe los servicios de la página oficial del municipio de Ocuilan .......... 73
Figura 4.11 Resultados en XPERIO Neo V .................................................................................................. 74
Figura 4.12 Resultados en Samsung S III mini ............................................................................................ 75
Figura 4.13 Página Google Play .................................................................................................................. 76
Lista de códigos
Código 1.1 Comparativa plataformas móviles .............................................................................................. 3
Código 3.1 Diseño interfaz de usuario ........................................................................................................ 43
Código 3.2 Selección de imagen de fondo para actividad .......................................................................... 43
Código 3.3 Botón de imagen ....................................................................................................................... 44
Código 3.4 Diseño interfaz usuario ............................................................................................................. 46
Código 3.5 Código XML interfaz de usuario ................................................................................................ 47
Código 3.6 Cadenas de texto ...................................................................................................................... 48
Código 3.7 Código fuente actividad ............................................................................................................ 48
Código 3.8 Manifiesto ANDROID ................................................................................................................ 50
Código 3.9 API KEY y Manifiesto ANDROID ................................................................................................. 55
Código 3.10 Permisos manifiesto ANDROID requeridos para soportar GOOGLE Maps ............................. 56
Código 3.11 Métodos en java para soportar GOOGLE Maps ...................................................................... 57
Código 3.12 Método para marcación de posiciones en GOOGLE Maps ..................................................... 58
Código 3.13 Colocación de coordenadas para marcadores en GOOGLE Maps .......................................... 58
Código 3.14 Fragment en XML .................................................................................................................... 58
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
81
Lista de tablas
Tabla 2.1 Norma 802.11 .............................................................................................................................. 11
Tabla 2.2 Capas TCP/IP ................................................................................................................................ 28
Tabla 3.1 Descripción de las actividades de la aplicación ........................................................................... 62
Tabla 3.2 Comunicación por capas ............................................................................................................. 63
Tabla 3.3 Handshake SSL ............................................................................................................................ 66
Tabla 4.1 Características del dispositivo virtual .......................................................................................... 70
Tabla 4.2 Características de los dispositivos de pruebas ............................................................................ 73
Lista de Acrónimos
Acrónimo Significado
ABIU Advanced Bus Interface Unit
Unidad de Interfaz de Bus Avanzado
AC Authentication Center
Centro de Validación.
ACK Acknowledgement
Reconocimiento.
ACP Accelerator Coherence Port
Puerto de Aceleración Coherente
ADT Android Development Tool
Kit de desarrollo Android
AMBA Advanced Microcontroller Bus
Architecture
Arquitectura Avanzada de
Microcontrolador Bus
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
82
API Application Programming Interface
Aplicación de Programación de
Interfaces.
ARM Advance RISC Machine
Arquitectura Avanzada RISC
AXI Advance Extensible Unit
Unidad avanzada extensible
BSC Base Station Controller
Controlador de estaciones base
BSD Berkeley Software Distribution
Distribución de Software Berkeley
BTS Base Trasnreceiver Station
Estación base transceptor
CA Certificate Authorithies
Autoridades de certificación
CDMA Code Division Multiple Access
Acceso Multiple por División de Código
CMOS Complementary Metal Oxide
Semiconductor
Semiconductor Complementario Óxido
Metálico
CPU Central Process Unit
Unidad de Procesamiento Central
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
83
DES Data Encryption Standard
Estándar de Encriptación de Datos
DMA Direct Memory Acces
Acceso directo de memoria)
DNS Domain Name System
Sistema de Nombre de Dominio)
EIR Equipment Identity Register
Registro de identidad de equipos
eNB envolved Node B
Nodo base envolvente
FPU Floating Point Unit
Unidad de Punto Flotante
FTP File Transfer Protocol
Protocolo de Transferencia de Archivos
GIC Generic Interrupt Controller
Controlador General de Interrupciones
GPS Global Position System
Sistema de Posicionamiento Global
GPU Graphic Process Unit
Unidad de Procesamiento Gráfico
HD High Definition
Alta Definición
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
84
HHS Home Suscriber Server
Servidore de suscripciones
HLR Home Location Register
Registro de locaciones
HTTPS Secure Hypertext Transfer Protocol-
Protocolo de Transferencia Hipertexto
Seguro
IDE Integrated Development Enviroment
Ambiente Integrado de Desarrollo
IDEA International Data Encryption Algorithm
Algoritmo Internacional de Encriptación
de Datos
IEEE Institute of Electrical and Electronic
Engineering
Instituto de Ingenieros Electricos y
Electronicos
JDK Java Development Kit
Paquete de desarrollo Java
JVM Máquina Virtual de Java
KEA Key Exhange Algorithm
Algoritmo de intercambio de claves
LAN Local Area Network
Red de Área Local
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
85
LSI Large Scale Integration
Integración de Gran Escala
LTE Long Term Evolution
Evolucion a largo plazo
MAC Message Autenthication Code
Código de Autenticación de Mensajes
MDX Message Digest Algorithm X
Algoritmo de Ordenación de Mensajes X
MIMO Multiple Input Multiple Output
Múltiples Entradas Múltiples Salidas
MME Mobility Management Entity
Entidad de Administración de movilidad
NDK Native development Kit
Paquete de Desarrollo Nativo
OFDMA Orthogonal Frecuency Division Multiple
Access
Acceso Múltiple por División de
Frecuencia Ortogonal
PMP Personal Media Players
Reproductores Media Personales
PIN Personal Identification Number
Número de Identificación Personal
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
86
PND Personal Navigation Devices
Dispositivos Personales de Navegación
PTM Program Trace Macrocell
Programa de señalización macrocelular
P-WG Packet Data Network Gateway
Compuerta de Red
RC4 Ron´s Code- Código de Ron
RSA Rivest, Shamir, Adleman
SC-FDMA Single Carrier Frecuency Division
Multiple Access
Acceso Múltiple por División de
Frecuencia con Portadora Única
SCU Snoop Control Unit
Unidad de Control
SDIO Secure Digital Input/Output
Entrada/Salida Digital Segura
SDK Software Development Kit
Paquete de Desarrollo de Software
SDRAM Synchronous Dinamic Random Access
Memory
Memoria síncrona dinámica de acceso
aleatorio
SHA1 Secure Hash Algorithm 1
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
87
Algoritmo de Hash Seguro 1
RSC Reduced Instruction Set Computer
Ordenador con Conjunto Reducido de
Instrucciones
SMS Short Message Service
Sevicio de Mensajes Cortos
SNMP Simple Network Management Protocol
Protocolo Simple de Administración de
Red
SSL Secure Socket Layer
Capa de Conexión Segura
S-WG Service Gateway
Compuerta de servicio
TCP Transmission Control Protocol
Protocolo de Control transmisión
TCP Transmission Control Protocol
Protocolo de Control transmisión
TCP/IP Transport Control Protocol/Internet
Protocol
Protocolo de Control de
Transporte/Protocolo de Internet
UART Universal Asynchronous Receiver
Transmitter
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
88
Rector Transmisor Asíncrono Universal
UDP User Datagram Protocol
Protocolo de Datagramas de Usuario
UMTS Universal Mobile Telecommunication
System-
Sistema de Telecomunicación Móvil
Universal
USB Universal Serial Bus
Bus Serial Universal
URL Unifrom Resource Locator
Localizador Uniforme de Recursos
VLR Visitor Location Register
Registro de locación de visita
WEP Wired Equivalent Privacy
Privacidad Equivalente a Cableado
WMAN Wireless Metropolitan Área Networks
Redes Inalámbricas de Área
Metropolitana
WPA WiFi Protected Access
Acceso Protegido WiFi
WPAN Wireless Personal Área Network
Redes inalámbricas de Área Personal
WWAN Wireless Wide Área Network
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
89
Redes Inalámbricas de área Amplia
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
90
Anexos
Código Java
CLASE MAINACTIVITY (MENÚ PRINCIPAL)
package com.ocuilan;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // Inicialización
}
public void vper(View view) {
Intent k = new Intent(this, Vid.class ); /*metodo que abrira la segunda ventana al presionar el boton Opcion 'X' */
startActivity(k);}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
91
public void iglesiaa(View view) {
Intent k = new Intent(this, santorin.class ); /*metodo que abrira la segunda ventana al presionar el boton Opcion 'X' */
startActivity(k);
}
public void aguaguna(View view) {
Intent k = new Intent(this, Zempoala.class ); /*metodo que abrira la segunda ventana al presionar el boton Opcion 'X' */
startActivity(k);
}
public void mapa(View view) {
Intent k = new Intent(this, Mapin.class ); /*metodo que abrira la segunda ventana al presionar el boton Opcion 'X' */
startActivity(k);
}
public void ocuilann(View view) {
Intent k = new Intent(this, Vid.class ); /*metodo que abrira la segunda ventana al presionar el boton Opcion 'X' */
startActivity(k);
}
}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
92
CLASE MAPIN (CLASE QUE MUESTRA GOOGLE MAPS ) package com.ocuilan;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
public class Mapin extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapin);
SupportMapFragment mapFragment = (SupportMapFragment) this.getSupportFragmentManager().findFragmentById(R.id.map); // Clase que inicializa el mapa
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
93
LatLng posi = new LatLng(18.978662,-99.416802); // Ajuste de posicion
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(posi,12);
GoogleMap map = mapFragment.getMap();
map.moveCamera(cameraUpdate);
LatLng ocuilan = new LatLng(18.978662,-99.416802); // Ajuste de coordenadas
MarkerOptions options = new MarkerOptions(); // Marcadores y contenido
options.position(ocuilan);
options.title("Ocuilan");
options.icon(BitmapDescriptorFactory.fromResource(R.drawable.ocu));
LatLng lagunass = new LatLng(19.0537778,-99.3151944);
MarkerOptions opti = new MarkerOptions();
opti.position(lagunass);
opti.title("Lagunas de Zempoala");
opti.icon(BitmapDescriptorFactory.fromResource(R.drawable.boton1));
LatLng chlma = new LatLng(18.9322222,-99.4358333);
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
94
MarkerOptions oper = new MarkerOptions();
oper.position(chlma);
oper.title("Chalma");
oper.icon(BitmapDescriptorFactory.fromResource(R.drawable.b2));
map.addMarker(options);
map.addMarker(opti);
map.addMarker(oper);
}
public void menu1u(View view) {
Intent k = new Intent(this, MainActivity.class ); /*metodo que abrira la segunda ventana al presionar el boton Opcion 'X' */
startActivity(k);
}
}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
95
CLASE GGALERIA (GALERÍA DE LA APLICACIÓN) package com.ocuilan;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class GGaleria extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ggaleria);
}
public void menu3(View view) {
Intent k = new Intent(this, MainActivity.class ); // metodo que abrirá la calse principal 'X' */
startActivity(k);}
}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
96
CLASE SANTORIN (INFORMACIÓN SANTUARIO DE CHALMA) package com.ocuilan;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class santorin extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sanctuario);
}
public void galeriaaa(View view) {
Intent k = new Intent(this, GGaleria.class ); /*metodo que abrira la segunda
ventana al presionar el boton Opcion 'X' */
startActivity(k);
}
public void menu1(View view) {
Intent k = new Intent(this, MainActivity.class ); /*metodo que abrira la segunda
ventana al presionar el boton Opcion 'X' */
startActivity(k);}
}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
97
CLASE VID (CONTENIDO WEB OCUILAN) package com.ocuilan;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class Vid extends Activity {
//Nuestra vista necesaria para la web
private WebView mWebView;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.vid);
//asociamos
mWebView = (WebView) findViewById(R.id.webview); // Clase que permite el uso de contenido web)
//cargo un .html que he situado en la carpeta asset/ del proyecto
mWebView.loadUrl("http://www.ocuilan.gob.mx/web/"); //Asignación de la dirección web.
}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
98
}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
99
CLASE ZEMPOALA (INFORMACIÓN LAGUNAS DE ZEMPOALA) package com.ocuilan;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class Zempoala extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.laguna);
}
public void galeria(View view) {
Intent k = new Intent(this, GGaleria.class ); /*metodo que abrira la Galería 'X' */
startActivity(k);
}
public void menu2(View view) {
Intent k = new Intent(this, MainActivity.class ); /*metodo que abrira el menú principal 'X' */
startActivity(k);}
}
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
100
Interfaces Gráficas XML
ACTIVITY_MAIN.XML <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/porta"
tools:context=".MainActivity" >
<ImageButton // Boton de imagen y atributos
android:id="@+id/imageButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_centerVertical="true"
android:layout_marginLeft="17dp"
android:src="@drawable/b2"
android:onClick="iglesiaa"
android:background="@android:color/transparent"
android:contentDescription="@+id/tre"
/>
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
101
<TextView // Inserción de texto y tributos
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/imageButton2"
android:text="@string/boton2"
android:textColor="#ffffff" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/imageButton1"
android:layout_below="@+id/imageButton1"
android:text="@string/b1"
android:textColor="#ffffff" /> // COLOR Blanco en código XML
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageButton2"
android:layout_marginBottom="45dp"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
102
android:layout_marginLeft="26dp"
android:layout_toRightOf="@+id/textView2"
android:src="@drawable/ocu"
android:onClick="ocuilann"
android:background="@android:color/transparent"
android:contentDescription="@+id/yuia"
/>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/imageButton3"
android:layout_centerVertical="true"
android:text="@string/acerca"
android:textColor="#ffffff" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageButton4"
android:layout_below="@+id/imageButton4"
android:layout_marginLeft="14dp"
android:text="@string/map"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
103
android:textColor="#ffffff" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/imageButton2"
android:layout_alignTop="@+id/imageButton1"
android:layout_marginTop="35dp"
android:src="@drawable/map"
android:onClick="mapa"
android:background="@android:color/transparent"
android:contentDescription="@+id/jij"
/>
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView3"
android:layout_below="@+id/imageButton3"
android:src="@drawable/boton1"
android:onClick="aguaguna"
android:background="@android:color/transparent"
android:contentDescription="@+id/nini"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
104
/>
</RelativeLayout>
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
105
GGALERIA.XML <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@drawable/porta" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/GGG"
android:textAppearance="?android:attr/textAppearanceLarge" />
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="291dp"
android:layout_marginTop="50dp" >
<LinearLayout //Asignación de imagenes de Galeria
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
106
<ImageView
android:id="@+id/imageView223"
android:layout_width="314dp"
android:layout_height="358dp"
android:src="@drawable/fotitico1"
android:contentDescription="@+id/gvav" />
<ImageView
android:id="@+id/imageView333"
android:layout_width="314dp"
android:layout_height="358dp"
android:src="@drawable/fotitico2"
android:contentDescription="@+id/dvav" />
<ImageView
android:id="@+id/imageView329"
android:layout_width="314dp"
android:layout_height="358dp"
android:src="@drawable/fotitico3"
android:contentDescription="@+id/cvav" />
<ImageView
android:id="@+id/imageView823"
android:layout_width="314dp"
android:layout_height="358dp"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
107
android:src="@drawable/fotitico4"
android:contentDescription="@+id/bvav" />
</LinearLayout>
</HorizontalScrollView>
<ImageButton
android:id="@+id/regreso124"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/backings"
android:onClick="menu3"
android:background="@android:color/transparent"
android:contentDescription="@+id/vav"
/>
</LinearLayout>
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
108
LAGUNA.XML <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/zempoala1"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="67dp"
android:text="@string/titulola"
android:textColor="#ffffff" />
<TextView
android:id="@+id/autoCompleteTextView"
android:layout_width="wrap_content"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
109
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:layout_marginRight="14dp"
android:layout_marginTop="27dp"
android:background="@drawable/sisisi"
android:ems="10"
android:text="@string/textolaguna"
android:textColor="#ffffff" />
<ImageButton
android:id="@+id/imageB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:src="@drawable/gll"
android:onClick="galeria"
android:background="@android:color/transparent"
android:contentDescription="@+id/vv"
/>
<ImageButton
android:id="@+id/imanes12"
android:layout_width="wrap_content"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
110
android:layout_height="wrap_content"
android:layout_below="@+id/autoCompleteTextView"
android:layout_marginRight="23dp"
android:layout_marginTop="53dp"
android:layout_toLeftOf="@+id/autoCompleteTextView"
android:src="@drawable/backings"
android:onClick="menu2"
android:background="@android:color/transparent"
android:contentDescription="@+id/uvv"/>
</RelativeLayout>
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
111
MAPIN.XML <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Mapin" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world" />
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
112
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@android:color/transparent"
android:contentDescription="@+id/vpuv"
android:onClick="menu1u"
android:src="@drawable/backings" />
</RelativeLayout>
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
113
SANCTUARIO.XML <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/santuarioo"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/santo" />
<ImageButton
android:id="@+id/imageBu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
114
android:layout_marginLeft="37dp"
android:layout_marginTop="14dp"
android:src="@drawable/gale"
android:onClick="galeriaaa"
android:background="@android:color/transparent"
android:contentDescription="@+id/vu"
/>
<TextView
android:id="@+id/autoCompleteTextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageBu"
android:layout_centerHorizontal="true"
android:layout_marginTop="22dp"
android:background="@drawable/fondosan"
android:ems="10"
android:text="@string/textoiglesia"
android:textColor="#ffffff" />
<ImageButton
android:id="@+id/regreso122"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="16dp"
android:layout_toLeftOf="@+id/autoCompleteTextView1"
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
115
android:background="@android:color/transparent"
android:contentDescription="@+id/vvuv"
android:onClick="menu1"
android:src="@drawable/backings" />
</RelativeLayout>
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
116
VID.XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="4dip"
android:textSize="16sp"
/>
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>
</LinearLayout>
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
117
Manifiesto Android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ocuilan"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<permission android:name="com.ocuilan.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.ocuilan.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission android:name="com.mapexplore.permission.MAPS_RECEIVE" />
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
118
<uses-permission
android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.ocuilan.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.ocuilan.GGaleria"></activity>
<activity android:name="com.ocuilan.santorin"></activity>
<activity android:name="com.ocuilan.Mapin"></activity>
<activity android:name="com.ocuilan.Zempoala"></activity>
<activity android:name="com.ocuilan.Vid"></activity>
<meta-data
Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles
119
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyD8Oi2TW1JmeUg7XyF3J3hysAdPHS1y1UE"/>
</application>
</manifest>