Full text
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA APP ANDROID DE GEOLOCALIZACIÓN DE PROCESIONES PARA LA SEMANA SANTA MALAGUEÑA ANDROID APP TO GEOLOCATE PENANCE PROCESSIONS AT MALAGA HOLY WEEK Realizado por Gonzalo Chica Morales Tutorizado por David Santo Orcero Departamento Lenguajes, Ciencias de la Computación e Ingeniería Artificial UNIVERSIDAD DE MÁLAGA MÁLAGA, Febrero 2017 Fecha defensa: El Secretario del Tribunal
Resumen: En España, tenemos una festividad cristiana llamada Semana Santa, en la que muchas ciudades, en concreto Málaga, procesionan por la ciudad diferentes imágenes en sus tronos. En Málaga contamos con una importante afluencia turística de más del 90% durante toda esta semana además de los propios devotos malagueños lo que indica que el centro de la ciudad queda totalmente lleno. Para todo este turismo que desconoce las calles de Málaga, e incluso para muchos malagueños que no conocen todas sus calles, surge la idea de desarrollar una aplicación móvil. Hoy en día con los teléfonos móviles, en concreto los Smartphone, cada vez más personas utilizan los servicios que ofrecen para solucionar o mejorar ante una dificultad. Por ello, para ayudar a los visitantes se desarrollará una aplicación que les indique en un mapa, en dónde se encuentra el trono a la hora exacta de la búsqueda a través de puntos de geolocalización y cómo llegar hasta ese punto. Además debido a que muchas procesiones retrasan sus salidas en consecuencia del tiempo meteorológico u otros motivos, se podrá añadir el retraso a cada procesión para localizar su ubicación tras dicho retraso. Por tanto conseguiríamos que cualquier persona pueda llegar a cualquier procesión estén donde estén sabiendo cuál es el camino más rápido para ello. Palabras claves: Android, Procesiones, GoogleMaps Abstract: In Spain we have a Christian festivity called Holy Week, in which in many places around the country, in particular Malaga, there is a procession through the city centre of different images on their denominated 'tronos'. In Malaga we have an important tourist influx of more than 90% during this week, aside from thousands of devoted people from Malaga itself, which result in the city centre being full of people. For all these tourists that don’t know the streets of Malaga, and even for many citizens who do not know all of the streets in the city, the idea of developing a mobile application arises. Nowadays with mobile phones, specifically smartphones, more and more people use the services that they provide to solve a problem or just make life a bit easier. In order to help visitors, an application will therefore be developed that will show where the procession is located on a map at the time of the search (through geolocation points) and how to get there. In addition, due to the fact that many processions delay their timetable as a result of bad weather or other reasons, a delay could be added to each procession, so that the app can take that delay into account when showing the procession's location at any time. We would be able to get anyone to any procession from where they are, and using the fastest route possible. Keywords: Android, Processiones, GoogleMaps
Índice general Índice general 3 1. Introducción 7 1.1. El problema existente . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2. Objetivos de este proyecto . . . . . . . . . . . . . . . . . . . . . . . 8 1.3. Organización de la memoria . . . . . . . . . . . . . . . . . . . . . . 8 2. Estado del arte 11 2.1. Introducción............................... 11 2.2. Semana santa -iBajopalio . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3. CofradíasMLG ............................. 15 2.4. Semana Santa Málaga Cope . . . . . . . . . . . . . . . . . . . . . . 17 2.5. Ser+Cofrade............................... 20 2.6. PasióndelSur.............................. 23 2.7. iCofrade Semana Santa de Málaga . . . . . . . . . . . . . . . . . . . 26 2.8. ElPenitente............................... 28 2.9. Semana Santa Málaga 2016 . . . . . . . . . . . . . . . . . . . . . . 34 2.10.Conclusiones............................... 38 3. Tecnologías utilizadas 39 3.1. Aplicación WEB - HTML5/CSS . . . . . . . . . . . . . . . . . . . . 39 3.2. Aplicación WEB - PHP . . . . . . . . . . . . . . . . . . . . . . . . 39 3.3. Aplicación WEB - MySQL . . . . . . . . . . . . . . . . . . . . . . . 40 3.4. Aplicación Móvil - Android [And16c] [And16a] . . . . . . . . . . . . 40 3.5. Aplicación Movil - Java . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.6. Aplicación Movil - JSON . . . . . . . . . . . . . . . . . . . . . . . . 41 3.7. Aplicación Movil - Librería Volley . . . . . . . . . . . . . . . . . . . 41 3.8. Aplicación Movil - API GoogleMaps [Goo16b] [Goo16a] . . . . . . . 42 3
ÍNDICE GENERAL 3.8.1. ElobjetoMapa......................... 43 3.8.2. Controles y Gestos . . . . . . . . . . . . . . . . . . . . . . . 45 3.8.3. Eventos ............................. 46 3.8.4. Datos de Ubicación . . . . . . . . . . . . . . . . . . . . . . . 46 3.8.5. Dibujo de Marcadores . . . . . . . . . . . . . . . . . . . . . 47 3.8.6. Dibujo de Formas . . . . . . . . . . . . . . . . . . . . . . . . 48 4. Análisis del Sistema 49 4.1. Casos de Uso - Aplicación WEB . . . . . . . . . . . . . . . . . . . . 49 4.1.1. IniciodeSesión......................... 50 4.1.2. Crear una nueva cofradía . . . . . . . . . . . . . . . . . . . . 51 4.1.3. Editar una cofradía . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.4. Eliminar una cofradía . . . . . . . . . . . . . . . . . . . . . . 53 4.1.5. Acceso a los puntos de geolocalización de una cofradía . . . 54 4.1.6. Crear una nuevo Punto de geolocalización . . . . . . . . . . 55 4.1.7. Editar un Punto de geolocalización . . . . . . . . . . . . . . 56 4.1.8. Eliminar un Punto de geolocalización . . . . . . . . . . . . . 57 4.2. Casos de Uso - Aplicación Móvil . . . . . . . . . . . . . . . . . . . . 58 4.2.1. Escoger un día de la semana . . . . . . . . . . . . . . . . . . 58 4.2.2. Escoger una procesión . . . . . . . . . . . . . . . . . . . . . 59 4.2.3. Añadir un retraso de horario . . . . . . . . . . . . . . . . . . 60 4.2.4. Actualizar horario . . . . . . . . . . . . . . . . . . . . . . . . 61 4.2.5. Navegación ........................... 62 4.2.6. Volver al menú de procesiones . . . . . . . . . . . . . . . . . 63 4.2.7. Volver al menú de días de la semana . . . . . . . . . . . . . 64 4.3. DiagramadeClases........................... 65 4.4. Diagrama de Secuencia . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.5. Diagrama Entidad-Relación . . . . . . . . . . . . . . . . . . . . . . 67 4.6. Obtención de datos a partir del sistema de la EMT . . . . . . . . . 68 5. Diseño del Sistema 71 5.1. Diseño e implementación . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1.1. Diseño de Interfaz . . . . . . . . . . . . . . . . . . . . . . . . 71 5.1.2. Implementación . . . . . . . . . . . . . . . . . . . . . . . . . 75 4
ÍNDICE GENERAL 6. Conclusiones y líneas futuras 79 6.1. Conclusiones............................... 79 6.2. Líneasfuturas.............................. 79 Bibliografía 81 A. Manual de usuario para la Aplicación WEB 83 A.1.Inicio................................... 83 A.2.Administracion ............................. 85 A.3.NuevaCofradía ............................. 86 A.4.EditarCofradía............................. 87 A.5.EliminarCofradía............................ 87 A.6.Puntos.................................. 88 A.7.NuevoPunto .............................. 89 A.8.EditarPunto .............................. 90 A.9.EliminarPunto ............................. 91 A.10.Salir de la Aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . 91 B. Manual de usuario para la Aplicación Móvil 93 B.1.Inicio................................... 93 B.2. Menú de selección de Cofradía . . . . . . . . . . . . . . . . . . . . . 94 B.3. Menú de Mapa e Itinerario . . . . . . . . . . . . . . . . . . . . . . . 94 5
Estado del arte Figura 2.1: Pantalla principal Las funcionalidades principales ofrecidas son: Información sobre las hermandades, incluyendo hermandades no agrupadas del viernes de Dolores y sábado de Pasión. Bandas que las acompañan, hermano mayor, número de hombres de trono y nazarenos además de su historia. Figura 2.2: Información sobre Hermandades Vista en vivo sobre un mapa y con realidad aumentada o en modo lista sobre las procesiones. 12
Semana santa -iBajopalio Figura 2.3: Mapa con las procesiones con GPS Escuchar Canal Sur Radio en directo. Figura 2.4: Canal Sur en directo Noticias a través de Twitter. Figura 2.5: Noticias en Redes Sociales 13
Estado del arte Galería multimedia con fotos, audios y vídeos. Figura 2.6: Galería Multimedia Buscador por días y horas de procesiones. Figura 2.7: Buscador de procesiones según día y hora Información de interés como curiosidades, actos y cultos, líneas de bus y metro etc. 14
CofradíasMLG Figura 2.8: Pantalla con más información de interés Esta completa aplicación cuenta con entre cinco mil y diez mil descargas en Android. 2.3. CofradíasMLG Esta aplicación perteneciente al Área de Turismo del Ayuntamiento de Málaga está disponible de forma gratuita para Apple y Android. La aplicación debe estar online para el sistema de geolocalización. Figura 2.9: Pantalla principal Las funcionalidades que ofrece son: Geolocalización de cada Cofradía. 15
Figura 2.10: Pantallade geolocalización por GPS Información sobre cada Cofradía y Hermandad. Reseña histórica, autores de las imágenes, acompañamiento musical, túnicas y datos de contacto. Figura 2.11: Información de cada cofradía Noticias en tiempo real. Figura 2.12: Pantalla con noticias 16
Semana Santa Málaga Cope Información sobre los distintos Museos. Figura 2.13: Pantalla con información de los museos Itinerarios de todas las cofradías. Figura 2.14: Pantalla con itinerarios de las cofradías Notificaciones en tiempo real. La aplicación cuenta con entre diez mil y cincuenta mil descargas en Android. 2.4. Semana Santa Málaga Cope Otra aplicación gratuita para Android y Apple que pertenece a la empresa Cope Málaga. La aplicación cuenta con numerosa publicidad en cada acceso a todas sus funciones. La aplicación es online para obtener la geolocalización. 17
Figura 2.15: Pantalla principal del menú La aplicación cuenta con: Información sobre las Cofradías y Hermandades. Figura 2.16: Información de las cofradías Geolocalización en tiempo real de las Cofradías y del usuario. Figura 2.17: Geolocalización por días utilizando GPS 18
Semana Santa Málaga Cope Itinerarios tradicionales y en mapas. Figura 2.18: Itinerario con mapa Twitter. Figura 2.19: Redes Sociales Galería de imágenes. Figura 2.20: Galería de Imágenes 19
Información meteorológica. Figura 2.21: Información Meteorológica Información sobre Marbella, Fuengirola y Benalmádena. Figura 2.22: Información de la provincia Esta aplicación cuenta con entre cinco mil y diez mil descargas en Android. 2.5. Ser+Cofrade Esta aplicación también es gratuita y está disponible para Android y Apple. Esta es propiedad de la Cadena Ser. La aplicación es completamente online. 20
Ser+Cofrade Figura 2.23: Pantalla principal Las diferentes opciones disponibles son: Geolocalización de todas las Cofradías y la distancia que le separa a cada procesión. Figura 2.24: Geolocalización por GPS Información detallada de cada Cofradía o Hermandad. Datos de interés, fotos y curiosidades. 21
Figura 2.38: Comparador de cofradías InstaCofrade para compartir fotos con otros usuarios. Figura 2.39: Instagram cofrade Twitter de la Agrupación de Cofradías de Málaga. Esta aplicación está disponible para más de diez ciudades y por ello cuenta con entre cincuenta mil y cien mil descargas en Android. 2.8. El Penitente Esta aplicación gratuita está disponible para Android y Apple. Esta es la más completa, popular y descargada de todas. La aplicación necesita estar online para su sistema de notificaciones y geolocalización. 28
El Penitente Figura 2.40: Pantalla Principal El contenido que ofrecen incorpora: Salidas Extraordinarias. Figura 2.41: Salidas Extraordinarias Cuaresma. Lista de procesiones y vía crucis. Figura 2.42: Procesiones de Cuaresma 29
Traslados. Lista de traslados y traslados del día. Figura 2.43: Traslados Información sobre cada Cofradía y Hermandad. Fundación, ingreso, número de hermanos, número de nazarenos, túnicas, titulares y más. Figura 2.44: Información de cofradías Acompañamiento musical de Málaga. Bandas de Música, Agrupación Musical, Cornetas y Tambores, Capilla Musical. 30
El Penitente Figura 2.45: Acompañamientos musicales Información sobre los templos. Figura 2.46: Información sobre templos Geolocalización. Figura 2.47: Geolocalización por GPS 31
Multimedia. Fotografías, momentos cofrades, marchas de la ciudad, carteles de Pasión.. Figura 2.48: Galería multimedia, momentos cofrades y otros varios Información meteorológica. Figura 2.49: Previsión meteorológica Diccionario Cofrade. 32
El Penitente Figura 2.50: Diccionario de palabras cofrades Agenda Cofrade. Próximos actos y eventos. Figura 2.51: Agenda de cultos y actos Curiosidades de la Semana Santa de Málaga. Figura 2.52: Curiosidades 33
Utilidades como teléfonos de urgencias, horarios de transportes. Figura 2.53: Información de utilidad La aplicación cuenta con entre cincuenta mil y cien mil descargas en Android. Actualmente están desarrollando la aplicación para la Semana Santa de Sevilla. 2.9. Semana Santa Málaga 2016 Esta aplicación está desarrollada por una sola persona y sólo está disponible para Android y de forma gratuita. Figura 2.54: Pantalla Principal La aplicación incluye: Breve historia de la Semana Santa malagueña. 34
Semana Santa Málaga 2016 Figura 2.55: Historia de la Semana Santa Itinerarios. Figura 2.56: Itinerarios de las cofradías Retransmisión en directo de Onda Azul. Figura 2.57: Retransmisión en directo de Onda Azul 35
Localizador por GPS de las cofradías. Figura 2.58: Localización a través de GPS Información meteorológica. Figura 2.59: Información meteorológica Consejos para recorrer la ciudad. 36
Semana Santa Málaga 2016 Figura 2.60: Apartado de Consejos Fotografías cofrades. Figura 2.61: Galeria de imágenes Numerosa publicidad sobre ocio, restauración e inmobiliaria. Figura 2.62: Apartados de anuncios varios 37
Con la subclase MapFragment, podremos disponer de un mapa en un fragmento de la actividad de Android. Esto nos será muy útil en la aplicación si queremos mostrar información adicional y botones en la parte exterior del mapa dentro de la misma vista, para controlar los retrasos. Los tipos de mapas de los cuales dispone la API son: Normal: Se muestran carreteras, elementos naturales importantes y etiquetas de carreteras y elementos. Tierra: Se incluyen colores, contornos, sombreados de perspectiva y etiquetas. Satélite: Datos de fotos satelitales sin etiquetas de carreteras ni elementos. Híbrido: Datos de fotos satelitales con mapas de carreteras y etiquetas de carreteras y elementos: Nuestra elección es el tipo Híbrido ya que mostrará la vista satélite de la ciudad además de añadir el nombre de las calles, algo muy importante en los itinerarios de Semana Santa. El objeto Map también dispone de mapas de interiores como planos de pisos para interiores, aeropuertos, centros comerciales etc. Esta herramienta no la utilizamos para nuestra aplicación. La Google Maps API permite configurar el estado inicial del mapa según las necesidades que tengamos, pudiendo especificar lo siguiente (junto con su XML): Posición de la cámara, ubicación, zoom, rumbo e inclinación (cameraZoom, cameraTargetLat, cameraTargetLng, cameraBearing ycameraTilt). Tipo de mapa (mapType). Posibilidad de mostrar los botones de zoom y de la brújula (uiZoomControls yuiCompass). Gestos para manipular el mapa (uiZoomGestures,uiScrollGestures, uiRotateGestures yuiTiltGestures). Habilitar el modo básico, un subconjunto de la funcionalidad completa de la API (liteMode). 44
Aplicación Movil - API GoogleMaps [Goo16b] [Goo16a] También se permite configurarlo a través del objeto GoogleMapOptions y con las mismas opciones que ofrece XML, como por ejemplo options.compassEnabled() yoptions.rotateGesturesEnabled(). Esto nos servirá para conforme cambiemos el horario, la pantalla se centre en la posición de la cofradía. Las opción para el Street View, que muestra vistas panorámicas de 360 grados de una ubicación, no será utilizada en nuestra aplicación. 3.8.2. Controles y Gestos Con la Google Maps API, podemos personalizar la manera en que los usuarios pueden interactuar con el mapa determinando los componentes integrados de la interfaz de usuario que aparecerán en el mapa y los gestos permitidos. Los controles, se podrán hacer visibles a través de la clase UiSettings y su método GoogleMap.getUiSettings(). Con ello podremos añadir por ejemplo: Controles de zoom, que se mostrarán en la esquina inferior derecha del mapa. Brújula, que se mostrará en la esquina superior izquierda solo cuando la cámara (imagen) se oriente con una inclinación distinta a cero. Mi ubicación, que se mostrará en la esquina superior derecha. Barra de herramientas, que aparecerá al tocar un marcador y permitirá acceder a la aplicación Google Maps. Esta API también permite controlar los gestos que podemos realizar, los mismos que en la aplicación Google Maps. Estos también podrán activarse o desactivarse con el método GoogleMap.getUiSettings() y podremos controlar: Gestos de Zoom: Dos toques para aumentar o disminuir 1 punto el nivel de zoom. Dos dedos para acercar o alejar más de un punto. Gestos de desplazamiento: Arrastrar con un dedo. Gestos de inclinación: Dos dedos y moviendo hacia arriba o abajo para aumentar o reducir respectivamente el ángulo de inclinación. Gestos de rotación: Dos dedos y aplicando un movimiento de rotación (circular). 45
3.8.3. Eventos Esta función nos permite escuchar eventos en el mapa atendiendo a clics, cambios de cámara, mapas interiores (que no utilizamos) o marcadores. Los eventos de clic en el mapa se controlarán con el método GoogleMap.OnMapClickListener() oGoogleMap.OnMapLongClickListener() dependiendo de si es un clic corto o largo, que nos devolverán un evento que indica la ubicación en donde se ha realizado dicho clic. Los eventos de cambio de cámara se utilizan para realizar el seguimiento de la posición de esta y se configura con GoogleMap.OnCameraChangeListener(). Se devolverá una notificación al aplicar un cambio a la cámara y podremos obtener la latitud, la longitud, el zoom, el rumbo y la inclinación. En cuanto a los eventos de marcadores, hablaremos más detalladamente en su correspondiente sección. 3.8.4. Datos de Ubicación Esta función nos permitirá conocer la ubicación del dispositivo en tiempo real, la dirección y método de movimiento y la posibilidad de cruzar un límite geográfico que hayamos definido previamente. Con la capa My Location podremos mostrar la ubicación de un dispositivo en el mapa. Para acceder a la ubicación del usuario, se necesitan agregar los permisos correspondientes. Android ofrece dos posibilidades: ACCESS_COARSE_LOCATION: Permite localizar la ubicación a través del Wi-Fi o datos móviles. ACCESS_FINE_LOCATION: Permite una ubicación más precisa a través de proveedores de ubicaciones disponibles como el sistema de posicionamiento global, además de los datos de Wi-Fi y los datos móviles. Estos permisos habrá que añadirlos en el manifiesto de la aplicación y además habrá que comprobar si está activada la ubicación, bien al realizar una acción o bien desde el inicio de la aplicación, para habilitar la capa My Location y poder conocer su ubicación. Al estar habilitada esta capa podremos añadir el botón que buscará nuestra ubicación al hacer clic en él. La opción para la navegación, será utilizada a través de la aplicación Google Maps, por tanto, cuando sea necesaria, a través de la barra de herramientas propia 46
Aplicación Movil - API GoogleMaps [Goo16b] [Goo16a] de la API, se lanzará la aplicación. Esto sucederá por ejemplo cuando el usuario pulse el marcador donde se encuentra la cofradía o para ir a uno de los tres puntos claves de geolocalización añadidos, Catedral, Tribuna Principal y Tribuna de los pobres. 3.8.5. Dibujo de Marcadores Los marcadores, son iconos que indican ubicaciones en el mapa. Pueden personalizarse con una imagen particular, cambio de color etc. Además disponen de ventanas de información para añadir información adicional. Este es el elemento más importante dentro del mapa, el cual nos informará de la posición de la cofradía. Cada cofradía tendrá una serie de puntos de Latitud y Longitud con un horario asignado, estos puntos habrá que añadirlos a un marcador para que finalmente este se situe en la posición correcta, en la hora correcta. Los marcadores se agregarán como objeto de tipo Marker con el método GoogleMap.addMarker() y podrán recibir eventos de clic además de recepción de eventos. El usuario podrá modificar la posición del marcador, si por ejemplo es para señalar el punto de partida, poniendo en true la propiedad draggable y pulsando de manera prolongada el marcador. Con un clic corto al marcador, aparecerá la barra de herramientas que nos permitirá acceder a la aplicación Google Maps directamente. Además de esto también se pueden personalizar: Posición: Un valor LatLng (Latitud, Longitud). Ancho: El punto de imagen donde se dispondrá el marcador. Alpha: Para la opacidad del marcador. Title y Snippet: Información que se mostrará al tocar el marcador. Icono: Para sustituir el icono predeterminado. Draggable yVisible: Funciones para mover y ver el marcador. Aplanar y Girar el marcador respecto de la pantalla. Para eventos de clic utilizaremos la interfaz OnMarkerClickListener() y para eventos de arrastre OnMarkerDragListener(). 47
El color es algo importante si queremos diferenciar varios marcadores a la vez en la pantalla. Otra herramienta importante será la eliminación de marcador con la opción Remove. Cuando querramos actualizar la posición de un marcador al añadir un retraso o al refrescarlo, sería desorganizado que aparecieran acumulados los marcadores de los horarios anteriores, por tanto, cada vez que se actualice la posición, primero debermos borrar el marcador anterior y luego añadir el nuevo. Así solo se encontrará siempre el marcador de posición además de los marcadores de puntos claves comentados anteriormente. Para la personalización de las ventanas de información hay que crear una interfaz InfoWindowAdapter y llamar a su método GoogleMap.setInfoWindowAdapter(). También podremos esperar eventos de clic en estas ventanas con GoogleMap.setOnInfoWindowsClickListener(). 3.8.6. Dibujo de Formas La API Google Maps, ofrece varios tipos de formas para poder dibujar en el mapa: Polyline: Son segmentos de líneas conectados para marcar trazos y rutas. Polygon: Delimita una forma para marcar áreas. No utilizado en la aplicación. Circle: Una proyección de un círculo dibujado en el mapa. No utilizado en la aplicación. Las Polilíneas son una parte importante en nuestro mapa ya que con ella podremos dibujar el recorrido oficial de las procesiones y dar algo mas de vistosidad al mapa. Un objeto Polyline consiste en un conjunto de ubicaciones de LatLng y crea una serie de segmentos de líneas que conectan dichas ubicaciones en una secuencia ordenada. Para ello hay que crear un objeto PolylineOptions y agregarle los puntos a éste. La polilínea se añadirá con un GoogleMap.addPolyline() y podrá modificarse con Polyline.setPoints() para cambiar sus puntos. El aspecto de las líneas puede modificarse, con aspectos como el ancho de la línea, el color y que contengan segmentos geodésicos (con aspecto recto, o curvado). Es importante saber, que la unión de los puntos de la línea se hace siempre en línea recta, es decir, no se adapta a las calles del mapa. Esto conllevará a añadir más puntos para que la polilínea final parezca que se adapta a las curvas, por ejemplo de una rotonda. 48
Capítulo 4 Análisis del Sistema 4.1. Casos de Uso - Aplicación WEB En este apartado, se mostrarán los escenarios que pueden suceder durante la ejecución de la aplicación WEB por parte del administrador. 49
Análisis del Sistema 4.1.1. Inicio de Sesión Caso de uso Iniciar sesión en la aplicación WEB Resumen El usuario deberá loguearse para poder acceder a la aplicación WEB Actores Usuario Precondición Acceder a geolocalizacionprocesiones.esy.es a través de un navegador. Postcondición 1. Estar logueado en el sistema 2. Redirección al panel de administración. Curso Normal 1. El usuario introduce su nombre de usuario y contraseña. 2. El usuario pulsa Entrar. 3. El sistema comprueba que los datos son correctos y se le informa. 4. Redirección al panel de administración. Curso Alternativo 1. El usuario introduce datos incorrectos y se le informa. 2. Redirección a la página de Inicio. Observaciones Ninguna. 50
Casos de Uso - Aplicación WEB 4.1.2. Crear una nueva cofradía Caso de uso Crear una nueva cofradía Resumen El usuario podrá crear una nueva cofradía desde el panel de adminsitración. Actores Usuario Precondición Estar logueado en el sistema. Estar en el panel de adminsitración. Postcondición Cofradía añadida en la Base de Datos y asignada a un día de procesión Curso Normal 1. El usuario pulsa el botón Nueva Cofradía 2. Redirección a la página de añadir cofradía. 3. El usuario rellena los campos nombre, número de tronos y selecciona un día de procesión. 4. El usuario pulsa el botón Añadir. 5. La cofradía se añade a la Base de Datos y se le informa al Usuario. 6. El usuario decide si Volver o Salir del sistema. Curso Alternativo El usuario reinicia los campos rellenados. El usuario no rellena uno de los campos y se le informa. Observaciones El usuario puede en cualquier momento volver al panel de administración pulsando Volver, también puede salir de la aplicación pulsando Salir. 51
Análisis del Sistema 4.1.3. Editar una cofradía Caso de uso Editar una cofradía Resumen El usuario podrá editar los datos de una cofradía Actores Usuario Precondición Estar logueado en el sistema. Estar en el panel de adminsitración. Postcondición Cofradía actualizada en la Base de Datos Curso Normal 1. El usuario pulsa el botón Editar de una de las cofradías de la tabla. 2. Redirección a la página de Edición de cofradía. 3. El usuario actualiza los campos nombre, número de tronos y selecciona un día de procesión. 4. El usuario pulsa el botón Actualizar Valores. 5. La cofradía se actualiza en la Base de Datos y se le informa al Usuario. 6. El usuario decide si Volver o Salir del sistema. Curso Alternativo El usuario no rellena uno de los campos y se le informa. Observaciones El usuario puede en cualquier momento volver al panel de administración pulsando Volver, también puede salir de la aplicación pulsando Salir. 52
Casos de Uso - Aplicación WEB 4.1.4. Eliminar una cofradía Caso de uso Eliminar una cofradía Resumen El usuario podrá eliminar una cofradía de la Base de Datos Actores Usuario Precondición 1. Estar logueado en el sistema. 2. Estar en el panel de adminsitración. Postcondición Cofradía eliminada de la Base de Datos Curso Normal 1. El usuario pulsa el botón Eliminar de una de las cofradías de la tabla. 2. Redirección a la página de Eliminación de cofradía. 3. El usuario confirma la eliminación de Cofradía. 4. La cofradía se elimina de la Base de Datos y se le informa al Usuario. 5. El usuario decide si Volver o Salir del sistema. Curso Alternativo El usuario rectifica y decide no eliminar la cofradía. Observaciones Ninguna. 53
4.2.3. Añadir un retraso de horario Caso de uso Añadir un retraso de horario Resumen El usuario podrá retrasar en intervalos de quince minutos el horario de recorrido. Actores Usuario Precondición Haber seleccionado una Cofradía en el menú. Postcondición El mapa actualizará el campo de retraso. Curso Normal 1. El usuario pulsa el botón de añadir un número de veces. 2. El campo de retraso va añadiendo los intervalos de quince minutos. 3. El usuario pulsa el botón Refrescar. Curso Alternativo 1. El Usuario pulsa el botón de quitar para corregir el retraso si hubiera añadido más del que quería. 2. El sistema informa al Usuario que no puede adelantar el horario más del inicio establecido por el itinerario oficial. Observaciones El usuario puede volver al menú de selección de cofradía en cualquier momento. 60
Casos de Uso - Aplicación Móvil 4.2.4. Actualizar horario Caso de uso Actualizar horario Resumen El usuario podrá actualizar el horario para poder volver a calcular la posición con la hora actual del dispositivo. Actores Usuario Precondición Haber seleccionado una Cofradía en el menú. Postcondición El mapa actualizará la posición con la hora actual del dispositivo. Curso Normal 1. El Usuario pulsa el botón de Refrescar. Curso Alternativo Ninguno. Observaciones Si no se actualiza el horario, la posición del recorrido será siempre aquella con el horario en el que se inició la vista del mapa. 61
4.2.5. Navegación Caso de uso Navegación Resumen El usuario podrá acceder a la navegación hasta el punto en donde se encuentra la Cofradía. Actores Usuario Precondición Haber seleccionado una Cofradía en el menú. Disponer de la aplicación Google Maps. Postcondición Apertura de la aplicación Google Maps con la navegación hasta el punto donde se encuentra la Cofradía. Curso Normal 1. El Usuario pulsa el botón Navegación. 2. Apertura de la aplicación GoogleMaps. Curso Alternativo Ninguno. Observaciones Ninguna. 62
Casos de Uso - Aplicación Móvil 4.2.6. Volver al menú de procesiones Caso de uso Volver al menú de procesiones Resumen El usuario puede volver al menú de selección de Cofradía. Actores Usuario Precondición Haber seleccionado una Cofradía en el menú. Postcondición Apertura de la vista con el menú de selección de Cofradías del día de la semana seleccionado anteriormente. Curso Normal 1. El Usuario pulsa el botón de volver. 2. La vista cambia al menú de selección de procesión. Curso Alternativo Ninguno. Observaciones Ninguna. 63
4.2.7. Volver al menú de días de la semana Caso de uso Volver al menú de días de la semana Resumen El usuario podrá volver al menú inicial de selección de día. Actores Usuario Precondición Haber seleccionado un día de la semana en el menú inicial. Postcondición Apertura de la vista con el menú de selección de día de la semana. Curso Normal 1. El Usuario pulsa el botón de volver.. 2. La vista cambia al menú de selección de día de la semana. Curso Alternativo Ninguno. Observaciones Ninguna. 64
Diagrama de Clases 4.3. Diagrama de Clases A continuación se muestra el diagrama de Clases. Figura 4.1: Diagrama de Clases 4.4. Diagrama de Secuencia A continuación se muestra el diagrama de Secuencia. 65
Figura 4.2: Diagrama de Secuencia 66
Diagrama Entidad-Relación 4.5. Diagrama Entidad-Relación A continuación se muestra el diagrama Entidad-Relación de la aplicación. Figura 4.3: Diagrama Entidad-Relación La Base de Datos se divide en tres tablas: Días de la semana, Cofradías y Posiciones. Tabla DIAS_SEMANA Contiene los días que contienen la Semana Santa, desde Domingo de Ramos a Domingo de Resurrección Atributo COD_DIA (Integer) Código para identificar los días Atributo DIA (Varchar) Nombre del día de la semana Atributo NUMERO_COFRADÍAS (Integer) Cantidad de cofradías que procesionan ese día Tabla COFRADÍA Contiene las cofradías que componen la Semana Santa Atributo COD_COF (Integer) Código para identificar las cofradías Atributo NOMBRE (Text) Nombre de la cofradía Atributo NUMERO_TRONOS (Integer) Cantidad de tronos que posee la cofradía Atributo DIA_ID (Integer) Clave ajena con el atributo COD_DIA de la tabla DÍAS_SEMANA 67
Tabla POSICION Contiene las posiciones de geolocalización de todas las cofradías Atributo COD_POS (Integer) Código para identificar las posiciones Atributo LATITUD (Text) Latitud del punto de la geolocalización Atributo LONGITUD (Integer) Longitud del punto de la geolocalización Atributo HORARIO (Integer) Horario del punto de geolocalización sin el carácter dos puntos Atributo COD_COF (Integer) Clave ajena con el atributo COD_COF de la tabla COFRADÍA Atributo RETRASO (Integer) Campo con el rertaso (si hubiera) de la Cofradía 4.6. Obtención de datos a partir del sistema de la EMT Se ha planteado por parte de la comisión de proyectos fin de carrera el analizar la posibilidad de obtener los datos a traves de la localización de la EMT, en lugar de hacerlo de forma colaborativa por parte de los atendientes. Aunque es técnicamente posible y no es complicado, tiene varios problemas el hacer uso de los datos de la EMT; enunciando los más importantes: Hacer uso de los datos de la EMT en lugar de un planteamiento colaborativo limita la aplicación exclusivamente a la Semana Santa de Málaga capital, y no se podría utilizar para cualquier otra Semana Santa. Hay que estar siguiendo las variaciones que haga la EMT de la mecánica de obtención de datos a partir de la EMT. No es un estándar fijo ni un API predeterminado, por lo que puede sufrir cambios en cualquier momento; incluso dentro de la propia Semana Santa. Si cualquier año la EMT decide no publicar los resultados, o utilizar captchas u otros mecanismos para evitar la estracción automática del dato, la aplicación deja de funcionar. Finalmente, el concepto diferencial de la aplicación es la mecánica colaborativa. Si se limita a mostrar los resultados de la EMT, queda una aplicación 68
Obtención de datos a partir del sistema de la EMT mucho más sencilla de desarrollar; pero indistingible de las otras ocho aplicaciones analizadas en el capítulo del estado del arte; y además que no aporta nada respecto a comprobar la página de la EMT con un navegador estándar. 69
Diseño del Sistema botones en la parte superior e inferior. Lo primero que haremos será obtener los tres Extras del Intent, para poder mostrar en la vista la cofradía seleccionada y para obtener el identificador de la cofradía. Volvemos a crear una URL para acceder a la página PHP que devuelve la lista de posiciones según el código de cofradía indicado. Volveremos a utilizar JSON y Volley. En el JSONArray posiciones, obtendremos la latitud, longitud, código de posición y horario. Tras esto, creamos la estructura de Horario_Posicion comentada anteriormente. Tras esto se introducirá dentro de un HashMap cuya clave será el horario y valor la estructura de posiciones. Posteriormente se crea el mapa inicial que tendrá tres marcadores preestablecidos para localizarse rápidamente además de una Polyline para mostrar el recorrido oficial. Tras esto se realizará la función debusquedaposicion(). Esta función obtendrá a través del TextView del horario, la hora y minutos actuales. Una vez que los tiene, se redondearán los minutos al cuarto de minuto más cercano, es decir a quince, treinta, cuarenta y cinco o cero minutos. Teniendo ya los minutos en los que se buscará la posición tenemos que obtener si se ha añadido algún retraso. Si se ha añadido, se restarán quince minutos módulo sesenta a los establecidos en el paso anterior, además si la hora tiene que reducirse, se restará uno módulo veinticuatro. Ya tenemos la hora y minutos exactos, por tanto ahora procedemos a buscar dentro del HashMap el valor que tenga ese horario como clave. Si lo encuentra, creará el marcador de la posición pero antes deberá saber si ya existía ese marcador para eliminarlo y que no aparezcan acumulados. Si no lo encuentra el valor, se informará de que la cofradía no está procesionando a esa hora. En cuanto a los botones de acción de la parte superior, el botón refrescar obtendrá la hora actual del sistema y actualizará los valores y la posición a esa hora a través de la función actualizarHora() además de actualizar de la Base de Datos el campo de retraso si este se hubiera modificado. El botón de añadir, añadirá los quince minutos módulo sesenta y la hora módulo veinticuatro (en su caso), para avisar al sistema de que se ha añadido un retraso. Esto hará que se muestre el retraso en otro TextView a través de la función mostrarRetraso(), que se irá actualizando conforme se vaya añadiendo o reduciendo retraso. Para reazliar el proceso de añadir o reducir retraso se deberá pulsar el botón refrescar. 76
Diseño e implementación El botón de reducir, quitará quince minutos y una hora tal y como explicamos en la función busquedaposicion(). También se irá actualizando el TextView comentado anteriormente. En el caso de que se intente reducir más del horario actual del dispositivo se informará de que no se puede adelantar el horario. Esto se comprobará con la función comprobar(). Cada vez que se pulse el botón de refrescar, se irá buscando la posición (si la hubiera) con ese horario modificado. Por último, también crearemos un Intent en el botón Volver para acceder a la pantalla de selección de día. 77
Diseño del Sistema 78
Capítulo 6 Conclusiones y líneas futuras 6.1. Conclusiones A lo largo de este trabajo fin de grado, hemos desarrollado una App completa, cliente-servidor, con el cliente siendo una App para Android, y el servidor un servidor Web. La App resuelve el problema básico de ubicar la cofradía de interés, y de dar el camino desde el punto dónde está el usuario del programa, hasta el punto dónde la cofradía está. Para ello se utiliza tanto los datos introducidos en la aplicación web por las cofradías, como la información de los retrasos. 6.2. Líneas futuras Hay dos líneas futuras a partir de las cuales podría crecer este trabajo fin de grado. La primera se referiría al algoritmo que se emplea para el cálculo de retrasos. El algoritmo que se emplea actualmente es bastante simple; pero puede ser mejorado mediante sistemas de votación, de media o de consenso. La segunda se referiría a la extensión de la App para permitir seguir cualquier tipo de evento que se desplace, como pueda ser una procesión de Reyes Magos, un desfile, o un Trio Eléctrico brasileño. Aquí habría que hacer un pequeño esfuerzo a nivel de imagen en la App, y añadiendo una opción -que puede ser tan simple como un desplegablepara filtrar los eventos por naturaleza. La mayor parte del esfuerzo sería a nivel de aplicación Web, para que distintos agentes que no tuvieran confianza entre sí pudieran gestionar distintos eventos por todo el mundo, indicando 79
Conclusiones y líneas futuras las características del evento y la ruta que se proponen realizar. 80
Bibliografía [And16a] Android Studio. Documentación de clases y métodos de Android Studio , 2016. [And16b] Android Studio. Generación de Latitud y Longitud para un punto de un mapa , 2016. [And16c] Android Studio. Guía para la utilización de Android Studio, 2016. [Goo16a] Google. Documentación de clases y métodos en Google Maps Android API, 2016. [Goo16b] Google. Guía para la utilización de Google Maps Android API , 2016. [Jos16] José Francisco Chicano García, José Antonio Montenegro Montes. Documentación del curso "Desarrollo de aplicaciones para dispositivos Android", 2016. 81
BIBLIOGRAFÍA 82
Apéndice A Manual de usuario para la Aplicación WEB A continuación se les enseña toda la navegación que se puede realizar en la aplicación WEB. La aplicación WEB será a vista del administrador de la aplicación, ya que sólo él puede controlar la Base de Datos. A.1. Inicio Al acceder a la dirección, la primera pantalla será para comprobar que es el administrador, el resto de páginas no serán accesibles si no se ha logueado correctamente. Se rellenarán los datos y se pulsará el botón Acceder. Figura A.1: Página Principal de menú de acceso. 83
Manual de usuario para la Aplicación WEB Figura A.2: Página de informe de acceso denegado. Si son correctos los valores, se indicará que se ha logueado correctamente y se redireccionará al menú de administración, en caso contrario se le indicará que no ha sido correcto y se redireccionará a la página principal de nuevo. Figura A.3: Página de informe de login correcto. 84
Administracion Figura A.4: Página de informe de login incorrecto. A.2. Administracion Una vez realizado correctamente el login, aparecerá el panel de administración en el que podremos observar en una tabla todas las cofradías que existen en la Base de Datos, informando del Día de Procesión, su Nombre y el Número de Tronos. La tabla dispondrá de una barra para poder desplazarse por todas las filas. En esta página podremos Añadir, Editar, Eliminar o acceder a los Puntos de geolocalización de una cofradía. También podremos Salir en cualquier momento de la aplicación. Figura A.5: Página de Administración de Cofradías. 85
Figura A.17: Página de informe de Salida. 92
Apéndice B Manual de usuario para la Aplicación Móvil A continuación se les enseña toda la navegación que se puede realizar en la aplicación móvil. La aplicación móvil será a vista de usuario. B.1. Inicio Al acceder a la dirección, la primera pantalla será el menú de selección de día de la Semana Santa a través de botones. Figura B.1: Pantalla de Inicio. Selección de día de la Semana Santa. 93
Manual de usuario para la Aplicación Móvil B.2. Menú de selección de Cofradía Al acceder al día de semana seleccionado, existen dos posibilidades, que no haya ninguna cofradía insertada en ese día en la Base de Datos, o que si las haya. Figura B.2: Ejemplo de día de la semana sin cofradías. Figura B.3: Pantalla de menú con las cofradías pertenecientes al día seleccionado. La representación de cofradías será a través de una lista seleccionable en la cual habrá que pulsar en una cofradía para mostrar la siguiente pantalla. También podremos volver pulsando el botón ilustrado con una flecha. Además se mostrará el día seleccionado en la parte inferior de la pantalla. B.3. Menú de Mapa e Itinerario La pantalla de menú de Mapa e Itinerario se divide en tres secciones: Un menú superior con un botón para refrescar el horario, posición y actualizar el retraso de 94
Menú de Mapa e Itinerario la Base de Datos, un botón para añadir un retraso (que será de 15 minutos) y otro botón para corregir el retraso si nos hemos excedido en éste. Además informará siempre de la hora actual y del retraso, si este se hubiera añadido. En la parte inferior, podremos volver al menú de cofradías pulsando dicho botón y además se nos informa de la cofradía seleccionada. Por último, la parte central de la pantalla mostrará el mapa siempre con tres puntos claves para localizarse (color azul) que serán la Catedral, la Tribuna Principal y la Tribuna de los Pobres, mostrando a su vez, el recorrido oficial en color morado que constituyen la Alameda Principal y la Calle Marqués de Larios. Además si hay una cofradía procesionando, se mostrará con un marcador de color morado. Figura B.4: Pantalla de menú de Mapa e Itinerario. Al acceder a este menú existen varias posibilidades: La cofradía seleccionada no tiene aún establecidos los puntos de recorrido en la Base de Datos. En el que se le informará de que no existen puntos de recorrido para esa cofradía. Figura B.5: Ejemplo de Cofradía sin puntos de recorrido. 95
Manual de usuario para la Aplicación Móvil Otra posibilidad sería que la cofradía seleccionada no esté en ese momento procesionando. También se le informará de que no está procesionando en ese momento. Figura B.6: Pantalla de menú de Mapa sin cofradía procesionando La última posibilidad, es que la cofradía esté procesionando en ese momento. Se mostrará como he indicado anteriormente, un marcador de color morado. Al pulsar en este marcador, tendremos la posibilidad de dirigirnos a ese punto. Para ello habrá que pulsar el botón que aparecerá en la parte inferior derecha con una flecha azul o el del icono de GoogleMaps. Esto ejecutará la aplicación GoogleMaps. Figura B.7: Pantalla de menú de Mapa con el marcador de la cofradía pulsado. Durante las procesiones, puede ocurrir que se produzca un retraso por motivos meteorológicos u otros, por tanto el menú superior se utilizará para añadir esos retrasos. Por cada vez que pulsemos el botón ’+’, se añadirán 15 minutos de retraso y una vez pulsado el botón Refrescar se mostrará el punto en el que debería estar la procesión habiéndose retrasado esos minutos. Cada vez que añadamos retraso, se nos informará a la izquierda del retraso que llevamos añadido. 96
Menú de Mapa e Itinerario Figura B.8: Pantalla de menú de Mapa con informe de retraso añadido. También podremos pulsar el botón ’-’ para corregir minutos de retraso si nos hemos confundido. Si el usuario intenta reducir más de la hora oficial, es decir, adelantar la procesión, se le mostrará un mensaje de que la hora no puede ser menor a la hora actual. Figura B.9: Pantalla de Mapa con informe de retraso excedido. Ademas de esto, si el retraso añadido resulta en que la cofradía aún no ha salido, se informará de que no está procesionando. 97
Manual de usuario para la Aplicación Móvil Figura B.10: Pantalla de menú de Mapa sin cofradía procesionando tras el retraso añadido. Así mismo, el botón en el que aparece un reloj, también nos permitirá refrescar el horario para mostrar el horario actual del dispositivo además de actualizar el campo Retraso de la Base de Datos si procede. 98