ESCU
DESARROL
INFORMACIÓ
INGENIE ASESOR TÉCNICO BECERRAINSTITU
ESCUELA SUPE INGENIER ESCUELA 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 IERO 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
PERIOR DE INGENIERÍA MECÁNICA Y ELÉC RÍA EN COMUNICACIONES Y ELECTRÓNIC SPECIALIDAD DE COMUNICACIONES
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.
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.4BlackBerry 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
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
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
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
VIII
Vid.xml ... 116
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.
X
Resumen
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.
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]
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.1ANDROID
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.3WINDOWS 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.4BLACKBERRY OS
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.1COMPARATIVA PLATAFORMAS MÓVILES
1.4 APLICACIONES 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.1ARQUITECTURA 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]
5
FIGURA 1.1ARQUITECTURA 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)
6
FIGURA 1.2PROCESADOR 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.2MICROPROCESADOR ARMCORTEX-A9
[image:17.612.76.513.71.289.2]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.3ARQUITECTURA 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):
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
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.1REDES INALÁMBRICAS DE ÁREA PERSONAL O WPAN(WIRELESS PERSONAL AREA
NETWORK)
10
2.2.2REDES 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.3REDES 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.4REDES 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.1WIFI
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.
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.1NORMA 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]
[image:22.612.67.558.70.467.2]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.1RED 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.2RED CELULAR 2.5G
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.3RED 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.4LTE
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.5WIMAX(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.6GSM.
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,
15
FIGURA 2.1SISTEMA 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.1ARQUITECTURA DE ANDROID
[image:26.612.96.496.81.258.2]16
FIGURA 2.2ARQUITECTURA SISTEMA OPERATIVO ANDROID
2.5.2EL 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.3RUNTIME DE ANDROID
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.4LIBRERÍ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.5ENTORNO 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
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.6APLICACIONES
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.7NIVELES 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.
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.1ECLIPSE
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
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.3DESCARGA ECLIPSE
2.6.2ANDROID 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
21 http://developer.android.com/sdk/index.html
FIGURA 2.4DESCARGA SDK
2.6.3JAVA 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:
22
FIGURA 2.5DESCARGA JDK
Una vez instalado el IDE Eclipse, es necesario instalar los paquetes y librerías contenidos en el Android SDK Manager.
FIGURA
2.6INSTALACIÓN SDK EN ECLIPSE
23
FIGURA 2.7INSTALACIÓN DE LAS LIBRERÍAS DE DESARROLLO EN ECLIPSE
2.7 COMPONENTES DE UNA APLICACIÓN
2.7.1VISTA (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.2LAYOUT
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.3ACTIVIDAD
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]
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.5PROVEEDORES 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.6RECEPTOR 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.
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.
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.
27
FIGURA 2.8ELEMENTOS DE UN PROYECTO ANDROID
2.9 MODELO TCP/IP
28
Capas del modelo TCP/IP
Capa Nombre
4 Aplicación
3 Transporte
2 Internet
1 Acceso a red
TABLA 2.2CAPAS 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]
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:
30
FIGURA 2.9PETICIÓN HTTP
FIGURA 2.10RESPUESTA 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.
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.
32
FIGURA 2.11ESQUEMA 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.
[image:43.612.76.509.89.232.2] [image:43.612.71.331.438.685.2]33
2.10.1PROTOCOLO 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.13REGISTROS 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
34
2.10.2PROTOCOLO 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)
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
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
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.3SSLPROTOCOLO 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.
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.1MAC(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.
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.
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.1NUEVO 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.
41
En la siguiente ventana se crea un icono de aplicación denominado ic_launcher.
FIGURA 3.3SELECCIÓ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.4CREACIÓN ACTIVIDAD
42
FIGURA 3.5NOMBRE 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.
43
3.3 DISEÑO DE UNA INTERFAZ DE USUARIO.
3.3.1RELATIVELAYOUT
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.1DISEÑ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.2SELECCIÓN DE IMAGEN DE FONDO PARA ACTIVIDAD
44
FIGURA 3.7VISTA DE ACTIVIDAD
3.3.2IMAGEBUTTON
Para añadir un botono con imagen es necesario que este elemento sea hijo de RelativeLayout.
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.8DISEÑO INTERFAZ DE USUARIO APLICACIÓN OCUILAN
3.3.4TEXTVIEW
Para introducir texto dentro de un layout se requiere del elemento textview, el cual
46
CÓDIGO 3.4DISEÑ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.5HORIZONTALSCROLLVIEW
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
47
CÓDIGO 3.5CÓDIGO XML INTERFAZ DE USUARIO
Pantalla
48
3.3.6CREACIÓ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.6CADENAS 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.
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.1CLASE 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
50
CÓDIGO 3.9MANIFIESTO 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:
51
FIGURA 3.10FIRMA DE APLICACIONES
Se selecciona el proyecto a firmar.
FIGURA 3.11SELECCIÓN DE PROYECTO
Se selecciona la opción Create new Keystore, esta será la llave de desarrollador que
52
FIGURA 3.12CREACIÓN CLAVE DE DESARROLLADOR
Se introduce un alias, el tiempo de validez del Keystore debe ser de al menos 25 años.
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.14SELECCIÓ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/
54
FIGURA 3.15CONSOLA 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.16APIKEY GOOGLEMAPS
55
FIGURA 3.17 GENERACIÓN DEL APIKEY
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.18APIKEY PROPORCIONADA POR GOOGLE.
Esta clave se coloca dentro del manifiesto Android, dentro de application:
CÓDIGO 3.10APIKEY Y MANIFIESTO ANDROID
56
CÓDIGO 3.11PERMISOS MANIFIESTO ANDROID REQUERIDOS PARA SOPORTAR GOOGLEMAPS
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.19INSTALACIÓN GOOGLEPLAY SERVICES
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.21ADICIÓN DE PROPIEDADES DE GOOLGLEPLAY 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.12MÉTODOS EN JAVA PARA SOPORTAR GOOGLEMAPS
Se incorpora la librería SupportMapFragment, que permite hacer a la aplicación
[image:68.612.70.509.122.270.2]