420 likes | 517 Vues
PROYECTO FIN DE CARRERA DISEÑO E IMPLEMENTACIÓN DE UNA APLICACIÓN ANDROID CON INTERFACES GRÁFICAS PARA INTRODUCCIÓN Y BÚSQUEDA DE RUTAS EN UN SERVICIO DE CONCERTACIÓN DE DESPLAZAMIENTOS EN VEHÍCULO COMPARTIDO A TRAVÉS DE INTERNET. AUTOR: Pablo Iglesias Doforno TUTOR: Martín López Nores.
E N D
PROYECTO FIN DE CARRERADISEÑO E IMPLEMENTACIÓN DE UNA APLICACIÓN ANDROID CON INTERFACES GRÁFICAS PARA INTRODUCCIÓN Y BÚSQUEDA DE RUTAS EN UN SERVICIO DE CONCERTACIÓN DE DESPLAZAMIENTOS EN VEHÍCULO COMPARTIDO A TRAVÉS DE INTERNET AUTOR: Pablo Iglesias Doforno TUTOR: Martín López Nores
Carpool • Práctica de compartir el uso de un automóvil por dos o más personas. • Menor consumo energético. • Reducción congestión del tráfico. • Mayor socialización. • Portales Web: www.vao.es, www.rideshare.co.uk
Proyecto Uvipool • Servicio de concertación de desplazamientos en vehículo compartido a través de Internet. • Mecanismos específicos para comprobar la realización de los acuerdos de compartición. • Certificación de acuerdos con criptografía de clave pública. • Geolocalización de terminales para mediación en conflictos y pago de compensaciones.
Objetivos del PFC • Implementación de aplicación cliente para dispositivos móviles Android. • Registro de usuarios. • Funcionalidades para roles de conductor y pasajero. • Interfaces para introducción y búsqueda de rutas. • Implementación de lógica del servidor. • Esquema completo de la base de datos. • Primera aproximación a la búsqueda de rutas.
Servlets • Programas Java que se ejecutan en el servidor. • Tareas asignadas a un Servlet. • Los Servlets son una mejora al modelo anteriormente utilizado en la Web, CGI.
Json - Definición • Json (JavaScriptObjectNotation) es un formato ligero de intercambio de datos. • La simplicidad de Json ha dado lugar a ser la alternativa a XML. Mucho más sencillo escribir un analizador sintáctico. • Utiliza convenciones que son ampliamente conocidos por los programadores de diferentes lenguajes. • Gson, librería de Google de Json, con mejores métodos de serialización y deserialización.
Json - Estructura Json está constituido por dos estructuras: • Una colección de pares de nombre/valor. En varios lenguajes esto es conocido como un objeto. • Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como vectores, listas, etc.
Android – elementos importantes • Las Actividades (o Activities) son interfaces visuales que esperan alguna acción del usuario. Una aplicación puede tener una actividad o más. • Para pasar de actividad en actividad, Android utiliza un elemento especial llamado Intent. • Los recursos en Android son aquellos ficheros que pertenecen al proyecto.
Android – Interfaz de usuario (UI) • Proporciona la interacción con el usuario. • Los elementos que la componen son básicamente View o ViewGroups o cualquier clase que hereden de estas. • Cada ViewGroup tiene la responsabilidad de medir el espacio disponible y asignárselo a las Views contenidas. Los ViewGroups más utilizados son los siguientes: • FrameLayout. • LinearLayout. • AbsoluteLayout. • RelativeLayout
Android – Elementos UI Uvipool • TextView • EditText • Button • ScrollView
Android – Elementos UI Uvipool • Spinner • Toast • ProgressDialog • ListView • AlertDialog
Android – Elementos UI Uvipool • Eventos: Notifican cualquier acción del usuario, ya sea pulsar una tecla, pulsar un botón, tocar un punto en la pantalla, etc. • Eventostáctiles: • onClick • onLongClick • onScroll
Android – Elementos UI Uvipool • AsyncTask • Clase específicamente creada para las actualizaciones asíncronas de la interfaz. • Con esta clase se pueden hacer todas las modificaciones de la interfaz de manera segura para ella. • Código más controlado y elegante.
Android – Elementos UI Uvipool • AsyncTask (Métodos) • onPreExecute: invocado dentro del hilo de la interfaz, justo antes de empezar la tarea. Es útil para actualizar la interfaz gráfica (por ejemplo, con una barra de progreso). • doInBackground(Params...): invocado en un hilo distinto después del onPreExecute. Es donde se realiza el trabajo costoso. • onPostExecute(Result): Se ejecuta en el hilo de ejecución de la interfaz al finalizar el trabajo.
Android – Elementos UI Uvipool • Mapas • Paquete com.google.android.maps incluido en el SDK de Android, que contiene las clases relacionadas con el rendering, control y dibujo sobre mapas. • Clase MapView que automáticamente dibuja un mapa básico de Google Maps. • Para poder obtener un MapView, se necesita previamente un API Key de Google Maps. • Se ha de añadir el permiso en el AndroidManifest.xml dado que no es un paquete estándar de Android.
Android – Elementos UI Uvipool • Mapas • Se puede trabajar sobre la vista del mapa con la clase Overlay.
Aplicación Uvipool - Cliente • Entrando en la aplicación
Aplicación Uvipool – ClienteInsertar usuario • Interfaz gráfica de entrada
Aplicación Uvipool – ClienteInsertar usuario • AsyncTask: • Recibe la URL del servidor. • Devuelve un objeto Usuario. • Adaptamos los datos para poder enviarlos: • Realizamos un objeto HashMap con elementos clave/valor para poder serializar a Json que enviamos al servidor.
Aplicación Uvipool – ClienteMenú principal • Esta compuesto por 4 pestañas. • Introducción de rutas de usuario conductor. • Introducción de rutas de usuario pasajero. • Introducción de vehículos. • Búsqueda de rutas. • Archivo XML, elemento principal TabHost. • Contenedor principal para albergar las pestañas. • LinearLayout para distribuir verticalmente las secciones principales. • Sección de la pestaña en la parte superior. • Sección del contenido de la pestaña en la parte inferior.
Aplicación Uvipool – ClienteIntroducción de rutas • Similar tanto para el conductor como pasajero. • Localizacion.java, clase para almacenar los valores de latitud y longitud que recibimos de Google Directions API. • Casuística con dos AsyncTask: • Una para conectarse a Google directions API. • Otra para conectarse con el servidor. • Para comunicarse con Google directions API utilizamos el método HTTP GET.
Aplicación Uvipool – ClienteBúsqueda de rutas • Envío de datos al servidor similar a las anteriores. Utilización de dos AsyncTask, en la segunda recibimos un ArrayList. • Spinner para seleccionar si usuario conductor o pasajero. • Casuística diferente a las anteriores, no se introducen datos en la BBDD. • Utilización de la clase Resultados.java., será la clase donde ubicaremos los datos de la respuesta del servidor. • Mostrar los datos. • ListView.
Aplicación Uvipool – ClienteConfirmación de ruta • Una vez seleccionada la ruta se desecharán los resultados no seleccionados, y enviaremos al servidor un arrayList con los datos de la ruta seleccionada. • Guardado los datos del pacto, se informa al usuario y se muestra el mapa.
Aplicación Uvipool - Servidor • Conexión base de datos. • Comprueba que exista o no el usuario(insertar o inicio sesión). • Procesa las fechas para introducirlas en la BBDD. • Se desconecta de la BBDD. • Respuesta al cliente con los datos.
Pruebas • Pruebas realizadas con varios usuarios tanto conductores como pasajeros. • Para encontrar resultados positivos, había que obtener resultados de una tabla y con esos resultados obtener resultados de otra tabla, y así sucesivamente hasta llegar al usuario. • Hora de partida de búsqueda -2 horas de la fecha introducida. • Se han hecho pruebas tanto con peajes como sin ellos.
Conclusiones (I) • La compartición de vehículos comporta numerosas ventajas. • Las nuevas tecnologías pueden promover decisivamente dicha práctica. • En este proyecto se ha construido una primera versión funcional de aplicación móvil para el servicio Uvipool. • Sin conocimiento previo de la mayoría, he llegado a manejar con fluidez todas las herramientas del entorno del proyecto.
Conclusiones (II) • Sobre Android: • Facilidad absoluta a la hora de programar interfaces gracias a sus recursos XML. • Gran disponibilidad de recursos integrables en las aplicaciones. • Potencia de las AsyncTask. • Sobre Servlets: • Potencia y facilidad de uso. • Simplicidad en las comunicaciones. • Relación servlets – BBDD. • MVC.
Trabajo futuro • Incorporación de mecanismos de red social de usuarios. • Posible integración con Twitter y Facebook. • Integración de pasarela de pagos para formalizar intercambios monetarios. • Estudio de nuevos mecanismos de identificación de posibilidades de compartición de vehículos. • Opciones de variación sobre las rutas predeterminadas. • Límites de demora y desvío. • Implementación de aplicación iOS.