Full text
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Grado en Ingeniería del Software Desarrollo de una aplicación en Android para la Cámara de Comercio de Málaga Development of an Android application for the Malaga Chamber of Commerce Realizado por María Victoria Díaz Redondo Tutorizado por Eduardo Guzmán de los Riscos Departamento Lenguajes y Ciencias de la Computación UNIVERSIDAD DE MÁLAGA MÁLAGA, febrero de 2015 Fecha defensa: El Secretario del Tribunal
Resumen: El uso de dispositivos móviles que incorporan un gran número de funcionalidades que poseen ordenadores tradicionales, en la actualidad se ha extendido notablemente entre la población. Hoy en día, en nuestro país, la tasa de penetración supera el 65% y es el sistema operativo móvil de Google, Android, el que lidera el mercado y casi a nivel mundial superando a su rival más directo, el sistema iOS de Apple. En este trabajo se pretende ofrecer un servicio al usuario de smartphone con sistema Android, donde pueda encontrar la información más relevante que la Cámara Oficial de Comercio de Málaga publica en su sitio web. A lo largo de este documento se presentará una evolución de la telefonía móvil, una comparación entre los sistemas operativos más relevantes del mercado actual y a continuación el análisis, diseño e implementación de la solución propuesta. Esta constará de una aplicación cliente para instalar en dispositivos móviles, y otra que actuará de servidora de contenidos. En la pantalla inicial se ofrece el acceso a las ofertas de servicios, y funcionalidad para contactar por correo electrónico o por teléfono. La información de los servicios ofertados se ofrece en formato listado-detalle, ofreciendo la solicitud de ampliación de información en un email formateado. Con acceso desde la pantalla inicial, también se ofrecen servicios de geolocalización, mediante un sistema de rutas, en la que el usuario puede ver la localización de la Cámara de Comercio, calcular su ruta para llegar, y puede seguir esta ruta mediante una representación etapa por etapa, de manera gráfica, en el mapa, con indicaciones detalladas de camino, duración, etc. Palabras claves:Android, JSON, SQLite, Google Maps API, ListView, Eclipse, Java, aplicación móvil, Cámara de Comercio de Málaga
Abstract: The use of mobile devices has currently spreaded among the population. Nowdays, many of these devices include features of traditional computers. The penetration rate exceeds 65% and the operating system for mobile Google Android leads the market and almost worldwide, surpassing its most direct rival, i.e. the Apple iOS system. This work intends to offer a service to the Android mobile devices users, where they will find the most relevant information that the Chamber of Commerce of Malaga publishes on its web site. Throughout this document an evolution of mobile telephony will be presented and a comparison between the most relevant operating systems on the current market. Next, the document presents the phases of development: analysis, design and implementation of the proposed solution. This solution will consist of a client application to be installed on Android mobile devices, and another that performs as a content service. The main screen provides access to services and also it allows the user to contact by either email or phone with the Chamber of Commerce. The information of the services offered by each area is displayed like a list view and a detail view. This detailed view provides the request for further information in a previously formatted email. The app also includes geolocation services, through a system of routes, in which the user can see the location of the Chamber of Commerce, calculate your route to get, and follow this route through a representation on the map, step by step, with detailed directions like duration and distance. Keywords: Android, JSON, SQLite, Google Maps API, ListView, Eclipse, Java, app, mobile application, Chamber of Commerce of Malaga.
1 Índice de Contenidos CAPÍTULO 1: INTRODUCCIÓN ............................................................................................. 3 1.1 INTRODUCCIÓN AL TFG ................................................................................................................ 3 1.2 OBJETIVOS ...................................................................................................................................... 3 1.3 ETAPAS DE DESARROLLO .............................................................................................................. 5 1.4 DESCRIPCIÓN DE LA SOLUCIÓN PROPUESTA ................................................................................ 5 CAPÍTULO 2: ESTADO DEL ARTE ....................................................................................... 7 2.1 EVOLUCIÓN DE LA TELEFONÍA MÓVIL .......................................................................................... 7 2.2 PLATAFORMAS MÓVILES ............................................................................................................ 10 2.2.1 Android .....................................................................................................................................10 2.2.1 iOS ...............................................................................................................................................11 2.2.3 Comparativa distintas plataformas .............................................................................12 2.3 CÁMARA DE COMERCIO DE MÁLAGA ........................................................................................ 13 2.3.1 ¿Qué es la Cámara y quiénes forman parte? .............................................................13 2.3.2 ¿Cómo desarrolla su actuación la Cámara? ..............................................................13 2.3.3 Servicios que ofrece la Cámara ......................................................................................14 CAPÍTULO 3: SISTEMA DE DESARROLLO: ANDROID ............................................... 15 3.1 SISTEMA ANDROID ..................................................................................................................... 15 3.1.1 Características y especificaciones .................................................................................16 3.1.2 Versiones de Android ..........................................................................................................17 3.2 HERRAMIENTAS: ANDROID SDK Y ECLIPSE ............................................................................ 18 3.3 COMPONENTES DE UNA APP ANDROID ..................................................................................... 18 CAPÍTULO 4: DESARROLLO DE LA APLICACIÓN ........................................................ 21 4.1 ANÁLISIS Y DISEÑO DE LA APLICACIÓN .................................................................................... 21 4.1.1 Requisitos funcionales ........................................................................................................21 4.1.2 Metodología de diseño (cascada y prototipado) ....................................................22 4.2 IMPLEMENTACIÓN ...................................................................................................................... 22 4.2.1 Desarrollo web .......................................................................................................................22 4.2.2 Desarrollo de herramientas locales ..............................................................................24 4.2.3 Desarrollo de la app ............................................................................................................26 4.3 PRUEBAS CON EL EMULADOR Y DISPOSITIVO REAL.................................................................. 38 4.3.1 Emulador .................................................................................................................................38 4.3.2 Dispositivo real ......................................................................................................................39 CAPÍTULO 5: CONCLUSIONES Y TRABAJOS FUTUROS ............................................. 41 5.1 CONCLUSIÓN DEL TFG ............................................................................................................... 41 5.2 FUTURAS AMPLIACIONES ........................................................................................................... 41 REFERENCIAS BIBLIOGRÁFICAS ..................................................................................... 43
2 Índice de Figuras Figura 1 - Handie Talkie H12-16 [2] ............................................................................................. 7 Figura 2 - Motorola DynaTac [2] .................................................................................................... 7 Figura 3 - Teléfonos móviles 2G [2] .............................................................................................. 8 Figura 4 - Teléfonos móviles 3G [2] .............................................................................................. 9 Figura 5 - Teléfonos móviles 4G [4] .............................................................................................. 9 Figura 6 - Cuota de mercado de Sistemas móviles en España [11] ............................... 12 Figura 7 - Arquitectura Sistema Android [9] ......................................................................... 15 Figura 8 - Versiones del Sistema Android ............................................................................... 17 Figura 9 - Reparto de versiones en el mercado actual [12] .............................................. 17 Figura 10 - Ciclo de vida de la clase Activity [13] ................................................................ 19 Figura 11 - Extensión en Typo3 .................................................................................................. 23 Figura 12 - Ejemplo de misión comercial ................................................................................ 23 Figura 13 - Cadena JSON ................................................................................................................ 24 Figura 14 - Conector ODBC - MySql ........................................................................................... 25 Figura 15 - Base de datos Comercio Exterior......................................................................... 25 Figura 16 - Paquetes de la aplicación ........................................................................................ 26 Figura 17 - Casos de uso ................................................................................................................. 27 Figura 18 - Clases del modelo de negocio ............................................................................... 28 Figura 19 - Clase DatabaseManagerHelper ............................................................................ 28 Figura 20 - Clase JSON ..................................................................................................................... 29 Figura 21 - Diagrama de secuencia ............................................................................................ 29 Figura 22 - Carga JSON .................................................................................................................... 30 Figura 23 - Parse JSON-Curso ....................................................................................................... 31 Figura 24 - Clase Curso BaseColumns ....................................................................................... 32 Figura 25 - Guardado de datos en SQLite ................................................................................ 32 Figura 26 - Cursor Adapter ........................................................................................................... 33 Figura 27 - Descarga y guardado de imágenes ...................................................................... 34 Figura 28 - Método crearMapa .................................................................................................... 35 Figura 29 - Método calcularRuta ................................................................................................ 36 Figura 30 - Método onPathSetListener .................................................................................... 36
3 Capítulo 1: Introducción 1.1 Introducción al TFG El proyecto tiene como finalidad el estudio de las posibilidades de negocio y promoción que ofrece el intercambio de datos y la sinergia entre sitio Web y aplicación móvil, generando contenido informativo actualizado en dispositivos móviles, y posibilitando de esta manera alcanzar a un mayor número de clientes con la información actualizada en tiempo real. Se desarrollará una aplicación que permita, a los usuarios de dispositivos móviles con sistema Android, acceder en cualquier momento a la información actualizada de los servicios y ofertas que presta la Cámara de Comercio de Málaga. El proyecto será desarrollado usando la plataforma de desarrollo recomendada por Google, Eclipse, y el gestor de base de datos SQLite Database Browser. Paralelamente a este proyecto, el alumno D. Francisco Andrade García realizará el desarrollo de esta aplicación móvil para dispositivos con sistemas iOS en otro TFG. 1.2 Objetivos Con el diseño, implementación e implantación de esta herramienta, se pretende: Perfeccionar la técnica de toma de requisitos de usuario, mediante la identificación y entrevista de los responsables de los servicios de la corporación, con el fin de estimar cuáles son susceptibles de ofrecerse mediante una solución de movilidad. Una vez realizadas las entrevistas, se procederá a especificar el ámbito del software a desarrollar, con las funcionalidades y requerimientos necesarios. De acuerdo con esto se podrá realizar una mejor estimación de las fases temporales e hitos de desarrollo del proyecto. Mediante el uso de diagramas de clase y casos de uso, se realizará el diseño del software a desarrollar. Sin necesidad de especificar los servicios de la Cámara de Comercio que se tratarán en la aplicación, el desarrollo requerirá del diseño de una funcionalidad web, que se comunicará al menos con dos servidores de la
4 corporación. Esta parte ha de obtener la información de dos bases de datos, y generar una salida de forma que pueda ser procesada y presentada por la aplicación móvil. Este servicio se desarrollará en PHP, y generará una salida JSON (JavaScript Object Notation). La aplicación móvil procesará esta salida y almacenará los datos en una base de datos SQLite en el dispositivo móvil, con el fin de que esté disponible para una consulta sin conectividad (en cuyo caso se indicaría al usuario la fecha de actualización de la información). A partir de la información almacenada en esta base de datos, la aplicación presentará a los usuarios la información categorizada de manera dinámica, a distintos niveles, según la información provista por el sitio Web. La aplicación estará desarrollada para adaptarse a los requerimientos de los distintos dispositivos, móviles y tabletas, en sus distintos tamaños de pantalla y resolución, y las últimas versiones del sistema Android. Se utilizarán métodos de desarrollo en cascada y prototipado, en la fase de diseño y desarrollo inicial e implantación. Como etapa final se hará una fase de implantación y pruebas entre los usuarios, en la que se podrá verificar el correcto funcionamiento de la aplicación. Pedagógicamente, podemos considerar los siguientes objetivos del proyecto: 1) Estudio de la Plataforma. Se analizará el entorno Eclipse (ADT) y los distintos servicios que provee a la hora del desarrollo de aplicaciones móviles para sistemas Android, así como el lenguaje Java. 2) Estudio de mecanismos de intercambio de datos. Se estudiarán las tecnologías PHP y JSON para la actualización de contenidos desde el sitio web, en aplicaciones móviles. 3) Estudio de Técnicas de Bases de datos. Se diseñará y creará una base de datos SQLite, almacenada en el dispositivo móvil. 4) Implementación de la aplicación móvil. Aplicando técnicas y estándares estudiados anteriormente se desarrollará una aplicación móvil para mostrar la información de interés para el usuario en dispositivo móvil con sistema Android.
5 1.3 Etapas de desarrollo El proyecto se realizará en 4 etapas: 1) Toma de requisitos: 10 horas 2) Análisis, diseño, e implementación de la aplicación web: 24 horas 3) Análisis, diseño, e implementación de las aplicaciones móviles para los dispositivos (teléfonos y tabletas): 223 horas. 4) Implantación en los dispositivos de la empresa, y pruebas: 40 horas 5) Subida a Play Store: 3 horas. 1.4 Descripción de la solución propuesta Para el cumplimiento de los objetivos del Trabajo Fin de Grado, se presenta una aplicación móvil que presenta información relevante desde los sitios web camaramalaga.com y formacioncamara.com, mostrándola de forma adecuada al dispositivo, y de manera funcional, a usuarios de dispositivos con sistemas Android. La aplicación constará de dos partes: La primera parte consiste en una aplicación web que permite la extracción de datos de los distintos portales de la corporación donde se aloja. Esta parte ha de obtener la información de dos bases de datos, y codificar los resultados obtenidos en las consultas en un objeto JSON cuya estructura se definirá en la fase de estudio del proyecto. De este objeto JSON obtendrá la aplicación móvil los datos necesarios para presentar la información a los usuarios La segunda parte del proyecto es el diseño y desarrollo de la aplicación móvil. Ésta almacenará los datos en una base de datos en el dispositivo, y la presentará al usuario, en una estructura que se definirá en el propio proyecto. En el caso de que el dispositivo se encuentre sin conexión, se mostrará la información de la base de datos descargada en la última visita con conexión.
12 Cuota de mercado en España Android iOS Windows Phone Otros 2.2.3 Comparativa distintas plataformas A continuación se muestran las ventas en España de dispositivos bajo los sistemas operativos más relevantes en el mercado móvil: Spain 3 m/e Mar 2013 3 m/e Mar 2014 % pt. Change Android 93.7 88.6 -5.1 BlackBerry 0.2 0.0 -0.2 iOS 3.1 7.6 4.5 Windows Phone 1.3 3.0 1.7 Other 1.8 0.8 -1.0 Como podemos apreciar en la Figura 6, el mercado en España es liderado por Android con un 88,6% de ventas y el sistema iOS se ha incrementado este último año en 4.5 puntos. Figura 6 - Cuota de mercado de Sistemas móviles en España [11]
13 2.3 Cámara de Comercio de Málaga Mi actividad profesional, desde que terminé mis estudios de Ingeniería Técnica en Informática de Gestión ha sido desarrollada en la Cámara Oficial de Comercio, Industria, Navegación y Servicios de la Provincia de Málaga. Mis tareas han estado relacionadas con la programación web principalmente. Con el crecimiento de usuarios de dispositivos móviles y las necesidades que se van generando en la sociedad, se pensó en la creación de una app corporativa que mostrara los principales servicios y sirviera de contacto directo con la Cámara desde cualquier dispositivo móvil y en cualquier momento o lugar. Como ya se ha descrito en la introducción, este es el objetivo del presente trabajo, por lo que se va a proceder a la descripción tanto de la corporación como de los servicios que presta para contextualizar la aplicación. 2.3.1 ¿Qué es la Cámara y quiénes forman parte? La Cámara es una Corporación de Derecho Público que se configura legalmente como órgano consultivo y de colaboración con las Administraciones Públicas y que tiene como finalidad la representación, promoción y defensa de los intereses generales del comercio, la industria y la navegación, así como la prestación de servicios a las empresas. Todas las personas físicas o jurídicas, nacionales o extranjeras, que ejerzan actividades comerciales, industriales o navieras y por tanto estén sujetos al Impuesto de Actividades Económicas. 2.3.2 ¿Cómo desarrolla su actuación la Cámara? Las líneas maestras de actuación son: Consolidar su papel como prestadora de servicios, especialmente a las pymes. Promover vocaciones empresariales y la creación de empresas. Colaborar activamente en el proceso de simplificación administrativa en la creación de empresas. Incorporar a las pymes en la sociedad de la información. Promover la innovación entre las empresas.
14 Potenciar y diversificar su actividad en la promoción del comercio exterior e internacionalización de las empresas. Recuperar e incentivar la Formación Profesional y Empresarial. Modernizar y apoyar la estructura y actividad comercial. Para alcanzar estos objetivos, se trabaja sobre cuatro pilares: creación y consolidación de empresas, nuevas tecnologías, internacionalización, turismo, formación y empleo. 2.3.3 Servicios que ofrece la Cámara Los servicios de la Cámara de Comercio de Málaga están orientados al crecimiento de las empresas y de los profesionales. Los departamentos que la forman y sus funciones principales son: - Formación, Empleo y Servicio a Pymes y Autónomos: en el que se encuentran programas de apoyo al demandante de empleo, agencia de colocación, cursos y másters especializados, asesoramiento a empresa, apoyo a emprendedores, vivero de empresas, programas de apoyo a la innovación, accesibilidad municipal, informes de mercado, listado de empresas, validación de certificados digitales Camerfirma, etc. - Comercio Exterior y Turismo: consultoría y apoyo a la internacionalización, ayudas y asesoramiento en la promoción exterior, seminarios especializados del sector turismo, sede “Q” de calidad Turística en Málaga, informes y estudios, jornadas sobre internacionalización, etc. - Secretaría General: licitaciones públicas, corte de arbitraje, servicio de mediación y asesoría jurídica. - Relaciones Institucionales: comunicación, prensa y protocolo. En este trabajo, se han tenido en cuenta cuatro grandes áreas de servicios, que incluyen los contenidos más relevantes al usuario de dispositivos móviles, los cuáles son:
15 Capítulo 3: Sistema de desarrollo: Android 3.1 Sistema Android La arquitectura del sistema Android está organizada en capas de forma jerárquica, es decir, cada capa superior depende de la inferior para poder realizar su cometido, y a su vez ofrece sus servicios a las capas superiores. Es la que se muestra en la siguiente figura: Como se puede apreciar en la Figura 7, la arquitectura del sistema Android está compuesta por un kernel basado en Linux, con middleware, librerías y APIs en lenguaje C, y aplicaciones que se ejecutan en un framework que incluye librerías compatibles con Java. Android usa una máquina virtual denominada Dalvik que optimiza los recursos ya que los dispositivos cuentan con prestaciones en cuanto a memoria, procesador y almacenamiento muy reducidas. Figura 7 - Arquitectura Sistema Android [9]
16 3.1.1 Características y especificaciones A continuación veremos cuáles son las características del sistema Android [9] en la siguiente tabla: Almacenamiento La base de datos utilizada es SQLite Conectividad GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, HSDPA, HSPA+, NFC y WiMAX.GPRS,UMTS y HSDPA+. Mensajería SMS y MMS Navegador web El navegador web incluido en Android está basado en el motor de renderizado de código abierto WebKit, emparejado con el motor JavaScript V8 de Google Chrome. Soporte de Java El bytecode Java no es ejecutado, sino que primero se compila en un ejecutable Dalvik y corre en la Máquina Virtual Dalvik, que es una máquina virtual especializada, diseñada específicamente para Android y optimizada para dipositivos móviles. Soporte multimedia Formatos multimedia soportados: WebM, H.263, H.264 (en 3GP o MP4), MPEG-4 SP, AMR, AMR-WB (en un contenedor 3GP), AAC, HE-AAC (en contenedores MP4 o 3GP), MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF y BMP.45 Soporte para streaming Streaming RTP/RTSP (3GPP PSS, ISMA), descarga progresiva de HTML (HTML5 <video> tag). Adobe Flash Streaming (RTMP) es soportado mediante el Adobe Flash Player. Se planea el soporte de Microsoft Smooth Streaming con el port de Silverlight a Android. Adobe Flash HTTP Dynamic Streaming Soporte para HW adicional Cámaras de fotos, de vídeo, pantallas táctiles, GPS, acelerómetros, giroscopios, magnetómetros, sensores de proximidad y de presión, sensores de luz, gamepad, termómetro, aceleración por GPU 2D y 3D. Play Store Catálogo de aplicaciones gratuitas o de pago en el que pueden ser descargadas e instaladas en dispositivos Android sin la necesidad de un PC. Multitáctil Android tiene soporte nativo para pantallas capacitivas con soporte multi-táctil. Multitarea Las aplicaciones que no estén ejecutándose en primer plano reciben ciclos de reloj. Tethering Android soporta tethering, que permite al teléfono ser usado como un punto de acceso alámbrico o inalámbrico.
17 3.1.2 Versiones de Android El historial de versiones del sistema operativo Android se inició con el lanzamiento de Android beta en noviembre de 2007. La primera versión comercial (de prueba), Android 1.0, fue lanzada en septiembre de 2008. Estas actualizaciones típicamente corrigen fallos de programa y agregan nuevas funcionalidades. Las distintas versiones de Android han sido desarrolladas bajo un nombre en clave y lanzamiento en orden alfabético: A continuación se muestra en la Figura 9 la cuota de mercado de las distintas versiones del sistema Android en enero de 2014, por lo que se aprecia que la versión más extendida actualmente es la Jelly Bean 4.1.x con la API 16, con un 35.9% y es la versión mínima que requiere la aplicación desarrollada en este trabajo. Apple Pie 09/2008 Lollipop 10/2014 Banana Bread 02/2009 Figura 8 - Versiones del Sistema Android Figura 9 - Reparto de versiones en el mercado actual [12]
18 3.2 Herramientas: Android SDK y Eclipse El entorno de desarrollo o IDE (Integrated Development Environment) utilizado para la implementación de la aplicación en este trabajo ha sido Eclipse junto con el Android SDK (Software Development Kit) que contiene las herramientas necesarias para el desarrollo de apps como son: depurador, emulador o simulador, documentación y ejemplos, y librerías. La descarga es gratuita y se puede acceder desde http://developer.android.com. Android Developer Tools contiene las herramientas de desarrollo y depuración de cada versión de Android dependientes de cada plataforma y están actualizadas para la nueva versión que haya aparecido. 3.3 Componentes de una app Android Las aplicaciones en Android están compuestas por los siguientes elementos: Activity: las actividades son el bloque encargado de la interfaz de la aplicación, presentando los elementos visuales e interaccionar con el usuario. Esta clase tiene un ciclo de vida, como se muestra en la figura 10, que se puede gestionar a partir de los siguientes métodos: o onCreate(): se ejecuta cuando la actividad es creada por primera vez y se utiliza sobre todo para inicializar las vistas, leer los parámetros de entrada y enlazarlos con los componentes, etc. o onRestart(): se lanza cuando una actividad se ha parado y vuelve a ser iniciada. o onStart(): se ejecuta cuando una actividad va a ser visible al usuario. o onResume(): se ejecuta cuando el usuario empieza a interactuar con la actividad. o onPause (): se lanza cuando una actividad pasa a segundo plano pero aún no se ha destruido. o onStop(): se ejecuta cuando la actividad ya no es visible al usuario. o onDestroy(): es lo último que se ejecuta cuando una actividad se ha destruido.
19 Figura 10 - Ciclo de vida de la clase Activity [13]
20 Service: implementan acciones que se ejecutan en segundo plano y no dependen de la actividad que realice el usuario con la aplicación. BroadcastReceiver: este componente responde a las notificaciones del sistema (batería, pantalla, descargas, etc.) y puede ser utilizado para notificar al usuario de los cambios sucedidos. ContentProvider: define los accesos a los datos almacenados por la aplicación para que otras aplicaciones puedan acceder o incluso modificarlos si el proveedor de contenidos lo permite. Intent: sirve para invocar componentes, como por ejemplo lanzar una nueva actividad. Layout: escrito en XML representa la visualización y estilo de los datos en cada actividad. View: son los elementos que componen la interfaz de usuario, como los botones o las entradas de texto.
21 Capítulo 4: Desarrollo de la aplicación 4.1 Análisis y Diseño de la aplicación El análisis y diseño de la aplicación se ha realizado de forma conjunta para los dos TFG (la versión para el sistema iOS ha sido desarrollada por Francisco Andrade García) ya que las aplicaciones deben ser coherentes y similares en funcionalidad y aspecto, además de respetar la imagen corporativa de la Cámara de Comercio. 4.1.1 Requisitos funcionales Para esta aplicación se han tomado una serie de requisitos iniciales necesarios para otorgar una funcionalidad que al usuario le resulte relevante y englobe los principales servicios o actividades de la corporación. Se ha optado por una metodología en cascada y basada en prototipos para que la aplicación vaya evolucionando a lo largo del tiempo, utilizando la base y siguiendo las directrices de este primer desarrollo. El prototipo servirá de representación y permitirá a la Corporación supervisar y guiar el diseño y funciones principales, además de permitir hacerse una idea concreta de cómo va a resultar la aplicación final. Como requisitos principales se definen los siguientes: Requisitos R1 Mostrar listado de cursos R2 Ampliar información de curso seleccionado R3 Mostrar listado de misiones comerciales R4 Ampliar información de misión comercial seleccionada R5 Mostrar listado de programas y ayudas R6 Ampliar información programa/ayuda seleccionado R7 Mostrar listado de licitaciones R8 Ampliar información sobre la licitación seleccionada R9 Solicitar más información por teléfono y correo electrónico R10 Mostrar ubicación de la Cámara R11 Calcular ruta de llegada a la Cámara
28 Las clases del modelo de negocio, que se encuentran en el paquete app.model, representan a los cuatro nodos de información que muestra la aplicación (Curso, Licitación, Programa y Acción) y proporcionan los métodos getter and setter para el acceso a sus propiedades. Como representación del paquete app.database la clase más relevante es la encargada de la gestión de la base de datos y su especificación es la siguiente: Figura 18 - Clases del modelo de negocio Figura 19 - Clase DatabaseManagerHelper
29 La clase encargada del tratamiento de la cadena JSON y el proceso de transformación a clase del modelo y guardado en la base de datos se encuentra en el paquete app.webservice y esta es su especificación: El funcionamiento de la aplicación es similar en todas las operaciones ya que se ha seguido el mismo patrón listado-detalle en todas las actividades, por lo que el siguiente diagrama de secuencia se toma como referencia, y simula el proceso de la petición del usuario sobre la información de acciones formativas de la Cámara de Comercio de Málaga en la aplicación, pulsando el botón “Formación”: Figura 20 - Clase JSON Figura 21 - Diagrama de secuencia
30 4.2.3.2 Inicio de la aplicación y precarga de datos La app se inicia con una Splash Activity, es decir, una pantalla inicial que muestra el logo de la corporación y que permite iniciar el proceso de procesamiento de la cadena Json del servidor web. Para ello se ha implementado una clase llamada JSON dentro del paquete app.webservices que se encarga de este cometido. Figura 22 - Carga JSON
31 La cadena se parsea y se crean objetos del modelo que son insertados en la base de datos de la aplicación. Para ello, la clase DBManageHelper, dentro del paquete app.database, proporciona los métodos necesarios para creación, actualización y borrado de datos. La clase DBConstant de este mismo paquete se encarga de proveer los nombres de los campos mediante clases que contienen los valores reales que se encontraran en la cadena JSON, de esta forma, se mantiene la integridad y coherencia en todo el código de la aplicación, ya que se utilizan esas constantes en lugar de texto o variables locales ante cualquier modificación externa. Estas clases implementan el interface de Android BaseColumns, este es el ejemplo para la clase Curso: Figura 23 - Parse JSON-Curso
32 El guardado de los datos se realiza de la siguiente forma desde la clase DBManagerHelper: 4.2.3.3 Estructura de la app La estructura que sigue la aplicación en cada apartado es común a todas las partes que la componen (Formación [Curso], Programas y ayudas [Programa], Comercio Exterior y Turismo [Acción], Licitaciones [Licitación]). Figura 24 - Clase Curso BaseColumns Figura 25 - Guardado de datos en SQLite
33 ListView y Adapter Todas las Activities principales de estos apartados se componen de un elemento ListView que se rellena a través del Adapter correspondiente en cada caso. Al pulsar el botón de “Consultar”, se abre una nueva Activity de detalle, que muestra una información más amplia del objeto que corresponde al ítem seleccionado en ese momento. El proceso de rellenado del ListView se realiza a través de la clase Adapter y los métodos bindView y newView, que hereda de la clase CursorAdapter, para cada clase del modelo. El método bindView se encarga de asignar los valores a los componentes de cada ítem de la lista y en método newView asigna el layout correspondiente a cada ítem. Figura 26 - Cursor Adapter
34 Almacenamiento y carga de imágenes Las imágenes son descargadas y almacenadas en una carpeta de recursos de la aplicación para evitar esperas molestas y no agradables visualmente al usuario ya que cada elemento del ListView se genera en el momento de visualización en la pantalla. El proceso se ha llevado a cabo dentro de la clase app/webservice/Json.java de la siguiente forma: Figura 27 - Descarga y guardado de imágenes
35 Google Maps API y Navegación Para la implementación del mapa que posiciona la localización de la Cámara de Comercio de Málaga y calcula la ruta desde la posición del usuario, se ha contado con una librería que contiene las clases necesarias para la navegación en el mapa. Las clases proporcionadas son: Navigator.java Directions.java Route.java Legs.java Steps.java El primer paso es registrarse en Google y obtener una clave para la API de Google Maps, en este caso se ha utilizado la versión 2. Una vez obtenida, se incluye en el manifiesto de la aplicación. El mapa se incluye en el layout mapa_activity.xml de la siguiente manera: Y en la clase Mapa_Activity.java, que hereda de FragmentActivity, se realiza la carga del contenido posicionando la ubicación de la Cámara. Figura 28 - Método crearMapa
36 El uso de la librería realiza el trazado de la ruta en el mapa, indicando un origen y un destino y proporciona un método que permite almacenar los pasos, que posteriormente se usarán para indicarle al usuario la ruta por etapas: Al calcularse la ruta a través de la clase Navigator.java, el método onPathSetListener, permite la obtención de los valores de los pasos, distancia y duración de la misma. El parámetro directions contiene los datos parseados a través de la cadena JSON que proporciona la API de Google. Figura 29 - Método calcularRuta Figura 30 - Método onPathSetListener
37 Android Manifiest
44 [12] Android Distribution Numbers Update for January 2014 http://www.droid-life.com/2014/01/11/android-distribution-numbers-update-forjanuary-2014-jelly-bean-closing-in-on-60/ [13] Android developer. http://developer.android.com Implementación http://stackoverflow.com/ https://developers.google.com https://github.com/tyczj/MapNavigator