Proyecto final de curso Android: Programación de aplicaciones (2ª

Anuncio
Proyecto final de curso
Android: Programación de aplicaciones
(2ª edición online, junio-septiembre 2011)
Nombre de la aplicación: MetroWidget
Autor: Sanjaime Calvet, Vicent
Qué hace la aplicación:
Este pequeño widget permite conocer rápidamente los horarios de los metros de
MetroValencia, que utilizas habitualmente para ir al trabajo y volver a casa. La
aplicación se conecta a un servicio web, que utiliza la web de MetroValencia, que
devuelve los horarios en html. Además, la aplicación tiene un mapa de Valencia con
las paradas de metro.
Licencia:
GPL2
A destacar:

Es un widget

El widget actualiza los horarios cuando recibe el intent de SCREEN_ON

La aplicación arranca un servicio que permite actualizar los horarios

Los horarios se obtienen, al menos, una vez al día de un servicio web.
Los horarios entre dos estaciones se reciben en html y se parsean con un
parser adhoc

Los horarios de ida y vuelta de cada día se almacenan en base de datos

Posee una pantalla de preferencias para indicar estaciones de ida y
vuelta, y los tiempos necesarios para llegar a las estaciones desde casa y
trabajo.

Tiene un mapa de Google Maps centrado en Valencia, con una nueva
capa con todas las estaciones.

Utiliza un handler para conectar el thread de consulta al servicio web y el
thread principal de la aplicación.

Las estaciones se cargan de un fichero XML que se encuentra en los
recursos internos de la aplicación.
Cómo lo hace:

El widget es un AppWidgetProvider, por tanto es un receptor de anuncios.
La clase del widget tiene una vista con una imagen de fondo y un texto.
Además posee un servicio llamado UpdateService que tiene la función de
actualizar el texto del widget cuando se pone en marcha.

El widget es receptor de anuncios y es capaz de recibir el intent SCREEN_ON.
Cuando recibe este anuncio se arranca el servicio que actualiza la información.

El widget escucha el evento de onClick para lanzar una activity llamanda
ActionsActivity que permite acceder al mapa o cambiarlos parámetros principales.

El servicio UpdateService que actualiza el widget tiene una base de datos
SQLite llamada TimetablesDB donde se realiza la consulta para ese día y entre
las dos estaciones definidas. Si esa información se encuentra en la base de datos
se actualiza el widget, en caso contrario, se lanza el thread llamado
RequestThread que tiene la función de realizar una petición al servicio web de
MetroValencia. La respuesta de este servicio es fichero html que se parsea con
ayuda de la librería Jsoup en la clase MetroValenciaServiceParser, que funciona
como DOM. Esta información se introduce en la base de datos y se vuelve a
lanzar el proceso de actualización para que obtenga la información de la base de
datos. La conexión entre el thread secundario y el principal se realiza con ayuda
del handler MetroHandler.

En el activity de funcionalidad auxiliar ActionsActivity, se puede lanzar la pantalla
de preferencias o la pantalla de mapa. La clase del mapa MetroMap, además
crea un nuevo overlay con las posiciones de las estaciones que se extraen de un
fichero estaciones3.xml de los recursos internos de la aplicación. Este fichero
XML se parsea con DOM.
Captura de pantallas:
Descargar