Desarrollo de un prototipo de aplicaci n de informaci n ...

130
Desarrollo de un prototipo de aplic ESCU DESARROL INFORMACIÓ INGENIE ASESOR TÉCNICO BECERRA INSTITU ESCUELA SUPE INGENIER ES cación de información turística para dispositivos m UELA SUPERIOR DE INGENIER MECÁNICA Y ELÉCTRICA LLO DE UN PROTOTIPO DE APLICA ÓN TURISTICA PARA DISPOSITIVOS P R O Y E C T O T E R M I N A L QUE PARA OBTENER EL TÍTULO DE ERO EN COMUNICACIONES Y ELECTRÓ P R E S E N T A LUIS EDUARDO MORENO NAVA O Y METODOLÓGICO: Ing. PEDRO MARTÍN M MÉXICO, D. F. DIC UTO POLITÉCNICO NACIO ERIOR DE INGENIERÍA MECÁNICA Y ELÉC RÍA EN COMUNICACIONES Y ELECTRÓNIC SPECIALIDAD DE COMUNICACIONES móviles I RÍA ACIÓN DE S MÓVILES. ÓNICA MORALES CIEMBRE 2013 ONAL CTRICA CA

Transcript of Desarrollo de un prototipo de aplicaci n de informaci n ...

Page 1: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 2: Desarrollo de un prototipo de aplicaci n de informaci n ...

Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles

II

Page 3: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 4: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 5: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 6: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 7: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 8: Desarrollo de un prototipo de aplicaci n de informaci n ...

Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles

VIII

Vid.xml .................................................................................................................................................. 116

Manifiesto Android .............................................................................................................................. 117

Page 9: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 10: Desarrollo de un prototipo de aplicaci n de informaci 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.

Page 11: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 12: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 13: Desarrollo de un prototipo de aplicaci n de informaci n ...

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]

Page 14: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 15: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 16: Desarrollo de un prototipo de aplicaci n de informaci n ...

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)

Page 17: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 18: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 19: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 20: Desarrollo de un prototipo de aplicaci n de informaci n ...

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]

Page 21: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 22: Desarrollo de un prototipo de aplicaci n de informaci n ...

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)

Page 23: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 24: Desarrollo de un prototipo de aplicaci n de informaci n ...

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]

Page 25: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 26: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 27: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 28: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 29: Desarrollo de un prototipo de aplicaci n de informaci n ...

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,

Page 30: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 31: Desarrollo de un prototipo de aplicaci n de informaci n ...

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:

Page 32: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 33: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 34: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 35: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 36: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 37: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 38: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 39: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 40: Desarrollo de un prototipo de aplicaci n de informaci 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).

Page 41: Desarrollo de un prototipo de aplicaci n de informaci n ...

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).

Page 42: Desarrollo de un prototipo de aplicaci n de informaci n ...

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).

Page 43: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 44: Desarrollo de un prototipo de aplicaci n de informaci n ...

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]

Page 45: Desarrollo de un prototipo de aplicaci n de informaci n ...

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:

Page 46: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 47: Desarrollo de un prototipo de aplicaci n de informaci 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

Page 48: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 49: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 50: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 51: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 52: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 53: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 54: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 55: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 56: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 57: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 58: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 59: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 60: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 61: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 62: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 63: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 64: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 65: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 66: Desarrollo de un prototipo de aplicaci n de informaci n ...

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:

Page 67: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 68: Desarrollo de un prototipo de aplicaci n de informaci n ...

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,

Page 69: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 70: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 71: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 72: Desarrollo de un prototipo de aplicaci n de informaci 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

Page 73: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 74: Desarrollo de un prototipo de aplicaci n de informaci 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.

Page 75: Desarrollo de un prototipo de aplicaci n de informaci n ...

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,

Page 76: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 77: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 78: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 79: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 80: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 81: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 82: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 83: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 84: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 85: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 86: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 87: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 88: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

Page 89: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 90: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 91: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 92: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 93: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 94: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 95: Desarrollo de un prototipo de aplicaci n de informaci 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

Page 96: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 97: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 98: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 99: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 100: Desarrollo de un prototipo de aplicaci n de informaci n ...

Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles

89

Redes Inalámbricas de área Amplia

Page 101: Desarrollo de un prototipo de aplicaci n de informaci n ...

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);}

Page 102: Desarrollo de un prototipo de aplicaci n de informaci n ...

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);

}

}

Page 103: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 104: Desarrollo de un prototipo de aplicaci n de informaci n ...

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);

Page 105: Desarrollo de un prototipo de aplicaci n de informaci n ...

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);

}

}

Page 106: Desarrollo de un prototipo de aplicaci n de informaci n ...

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);}

}

Page 107: Desarrollo de un prototipo de aplicaci n de informaci n ...

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);}

}

Page 108: Desarrollo de un prototipo de aplicaci n de informaci n ...

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.

}

Page 109: Desarrollo de un prototipo de aplicaci n de informaci n ...

Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles

98

}

Page 110: Desarrollo de un prototipo de aplicaci n de informaci n ...

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);}

}

Page 111: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

/>

Page 112: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 113: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 114: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 115: Desarrollo de un prototipo de aplicaci n de informaci n ...

Desarrollo de un prototipo de aplicación de información turística para dispositivos móviles

104

/>

</RelativeLayout>

Page 116: Desarrollo de un prototipo de aplicaci n de informaci n ...

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" >

Page 117: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 118: Desarrollo de un prototipo de aplicaci n de informaci n ...

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>

Page 119: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 120: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 121: Desarrollo de un prototipo de aplicaci n de informaci n ...

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>

Page 122: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 123: Desarrollo de un prototipo de aplicaci n de informaci n ...

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>

Page 124: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 125: Desarrollo de un prototipo de aplicaci n de informaci n ...

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"

Page 126: Desarrollo de un prototipo de aplicaci n de informaci n ...

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>

Page 127: Desarrollo de un prototipo de aplicaci n de informaci n ...

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>

Page 128: Desarrollo de un prototipo de aplicaci n de informaci n ...

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" />

Page 129: Desarrollo de un prototipo de aplicaci n de informaci n ...

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

Page 130: Desarrollo de un prototipo de aplicaci n de informaci n ...

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>