Universitat Oberta de Catalunya

Lector RSS de ‘Mosaic’ para dispositivos ‘Android’

Asignatura: TFC – ADHOC

Consultor: César Tardáguila Moro

Introducción

Corría el año 1995 cuando me conecté a Internet por primera vez. Después de pedir permiso a un profesor de la universidad, éste nos dejó conectarnos durante un par de horas en las que un navegador primitivo nos enseñó bastante texto, alguna imagen y poca información útil. Hoy en día cojo el teléfono y puedo leer el correo, escuchar un podcast o ver un programa de televisión, desde prácticamente cualquier parte.

Actualmente, vivimos en una sociedad muy marcada por el uso de los dispositivos móviles, no sólo en el ámbito académico o profesional, sino en el cotidiano también. En este proyecto, analizaremos el uso de Android en detrimento de otras plataformas como iPhone, Blackberry o Windows Phone. El hecho de que Android sea otro producto surgido de la factoría Google y que además utilice Linux como sistema operativo de código libre ha favorecido esta decisión.

Personalmente quise aprovechar la ocasión de la elaboración del TFC del Graduado Multimedia para poder realizar algo que no conociera hasta el momento. Traspasé mis inquietudes a Ferran Giménez y me puso en contacto con César Tardáguila, quien ha sido a la postre mi tutor en este trabajo. De este encuentro surgió la oportunidad de trabajar con un entorno que, hasta el momento, era desconocido para mí: el desarrollo de aplicaciones para dispositivos móviles. A grandes rasgos se trataba de adaptar el contenido del RSS de Mosaic para que pudiera ser leído por un dispositivo móvil con sistema operativo Android.

La propuesta de trabajar con Android y con Mosaic, portal con el que hemos aprendido mucho en los últimos años, resultó ser apasionante. Bien es cierto que los trabajos que contienen programación pueden ser ingratos para todos aquellos que, como me ocurre a mí, siempre creemos que podemos hacer algo más y mejor, pero en este sentido César siempre me ha animado y me ha servido de guía en este proyecto, por lo que aprovecho estas líneas para agradecerle el soporte y ayuda que me ha brindado.

Por cierto, ¿saben cómo se llamaba aquel navegador que utilicé en mi primera conexión a Internet…? Mosaic.

Etapas y retos

1. Análisis tecnológico

Descripción del caso de uso general:

{Pre condición} Existe una lista de categorías en un fichero accesible por la aplicación.

1. El acceso a la aplicación por parte del usuario comienza con la consulta de categorías de Mosaic, estas se mostrarán en una primera pantalla en forma de lista. El acceso a las mismas será tanto por scroll como por acceso directo mediante la letra inicial de cada una de ellas.

2. Una vez seleccionada una categoría se mostrarán un número determinado de artículos (título, autor, fecha, resumen) ordenados por fecha de artículo, descendiente, de manera que los más actuales quedarán en la parte superior de la lista. El usuario podrá retroceder a la lista inicial o visualizar el artículo completo.

3. En la última pantalla de visualización del artículo veremos todos los datos relativos a éste: título, autor, fecha, contenido y categorías asociadas. Desde allí podremos volver atrás o visualizar otros artículos pertenecientes a las categorías relacionadas con el mismo volviendo, en este caso, a un subgrupo de la pantalla inicial, desde donde se iniciaría de nuevo el caso de uso.

{Post condición} Se ha visualizado la lista de categorías.

1.1. Comparativa

Desde un principio se pensó en utilizar Android para el desarrollo de la aplicación, aunque actualmente hay varios fabricantes en el mercado que ofrecen productos similares. Algunos de ellos se muestran a continuación:

* Symbian: muy rápido, soporte multimedia extenso, las herramientas organizativas son su punto débil.
* Android: muchas aplicaciones en el Market, multitarea, sincronización con aplicaciones Google, en mejora continua.
* iOS (iPhone): muchas aplicaciones disponibles en su AppStore, gran soporte multimedia, interfaz de uso sencilla.
* Research in Motion (Blackberry): multitarea, rápido, herramientas de organización inmejorables, pocas aplicaciones.
* Microsoft Windows Mobile (Windows Phone): muy buena sincronización con PC, herramientas de organización, la multitarea no es su punto fuerte.
* Palm: multitarea, pocas aplicaciones.

ANDROID

* Ventajas: programa de código abierto bajo licencia de Apache y auspiciado por Google. Sistema operativo basado en Linux. Programación sencilla en Java y ficheros de configuración XML que minimizan las líneas de código. Número de dispositivos en aumento (ver Tabla).
* Inconvenientes: el emulador para PC necesita bastante memoria. La curva de aprendizaje de Java suele ser dura, aunque Android facilita mucho su programación. Los dispositivos móviles de otros fabricantes quedan fuera del alcance del proyecto, en torno al 70% del total, según el informe de Gartner de la tabla adjunta (Noviembre 2010).

1.2. Tecnología

Una vez decidida la plataforma de ejecución e implementación se empezó por consultar la documentación disponible e instalar el entorno de desarrollo, en nuestro caso:

* Sistema operativo anfitrión: Windows XP SP3 o superior
* Java SDK v6.21
* Eclipse 3.5 (Galileo) R2
* Android SDK 1.5 o superior
* ADT (Android Development Tools ) para Eclipse. Plug-in necesario para poder programar en Android desde Eclipse.

Android utiliza una máquina virtual de Java propietaria llamada Dalvik, la cual está optimizada para dispositivos móviles. Aunque el lenguaje de desarrollo en Android es Java es posible realizar muchas acciones sin necesidad de programar. Utilizando ficheros XML podemos definir nuestra interfaz, menús y pestañas de manera bastante rápida y sencilla.

VERSIÓN DE ANDROID:

Siempre es importante asegurar un nivel mínimo de compatibilidad de versiones (backward and forward compatibility) de manera que las aplicaciones se puedan ejecutar en el máximo número de dispositivos con una pérdida mínima de funcionalidades. En nuestro caso no se requieren funcionalidades muy específicas por lo que se ha trabajado con una versión de SDK 1.5. De esta manera aseguramos que la aplicación se ejecute correctamente en el 100% de dispositivos Android. La última versión que ha salido al mercado recientemente es la 2.3, la tendencia actual es la desaparición paulatina de dispositivos con Android versión 1.x (ver Gráfico).

1.3. Estructura de proyecto en Android

La siguiente imagen muestra la estructura de directorios que tienen todos los proyectos de Android.

– scr: contiene todos los archivos fuente de Java.

– gen: también contiene archivos fuentes de Java, aunque son generados automáticamente por Android.

– res: contiene todos los recursos externos (imágenes, archivos de dato, etc). Posteriormente serán accedidos desde la aplicación. Contiene los siguientes sub directorios:

Drawable: imágenes, fotos, iconos.
Layout: UI Layouts usados por la aplicación en xml. Listas, botones, textos, menús, etc.
Values: archivos xml con duplas clave-valor. Arrays, textos, colores, etc.

– Android.manifest: fichero donde se indican la lista de actividades, actividad inicial, nombre de la aplicación, permisos especiales, y versión mínima.

2. Análisis gráfico
2.1. Comparativa de lectores de RSS

Lector FeedR

Pantalla lista de noticias: Muestra el listado de categorías disponibles así y como el número de artículos de cada una. Uso de iconos sobre fondo negro.

Pantalla detalle artículo: título, imagen y descripción. Botonera de opciones.

Lector GoogleReader

Pantalla lista de noticias: Lista de categorías con número de artículos de cada una. Uso de iconos sobre fondo blanco.

Pantalla detalle artículo: título y resumen del artículo acompañado de un elemento gráfico. Menú general.

2.2. IU en Android

Las pantallas en Android se construyen a partir de lo que llaman vistas. Como se puede ver en el gráfico de encima, existe una jerarquía entre los elementos gráficos de la aplicación. Las vistas grupales son contenedores de otras vistas. En el grupo se define la posición de los elementos en la pantalla y la vista es el componente en cuestión: texto, botón, lista, etcétera.

2.3. Definición de la Interfaz

A partir del análisis tecnológico se define una interfaz basada en diferentes pantallas que pasamos a describir a continuación:

1. Listado de Categorías de Mosaic existentes en su RSS (http://mosaic.uoc.edu/feed/). Se permite la visualización de todos los artículos o el acceso directo a los de una categoría determinada.

2. Títulos de todos los artículos o de aquellos pertenecientes a la categoría seleccionada previamente.

3. Contenido ampliado del artículo seleccionado y fecha de publicación, extraído del RSS. En esta pantalla se podrán realizar dos acciones diferentes.

3. 1. Mediante el enlace del artículo se podrá visualizar este de manera íntegra. El navegador accederá a la URL del mismo.

3. 2. Mediante el botón de acceso a categorías podremos ver todas aquellas que tienen relación con el artículo seleccionado.

A partir de aquí podremos mostrar la web de la categoría seleccionada.

3. Desarrollo

El objetivo inicial partía de la presentación de una lista de categorías de información de Mosaic extraídas de un fichero en disco (estático). A partir de la selección de una de ellas, mostrar los artículos que aparezcan en el RSS, pudiendo acceder a las categorías restantes relacionadas con el artículo.

Posteriormente se añade el acceso al artículo íntegro y la posibilidad de acceder al enlace web de las categorías y/o etiquetas relacionadas con el artículo por el navegador del dispositivo. En última instancia se realizan algunos ajustes relacionados con la manera de mostrar la información: diálogo de carga de datos, logo de Mosaic, integración de menús y adecuación de fechas.

Durante el ciclo de vida de cualquier proyecto se producen cambios, algunos de ellos son esperados y algunos otros se descubren durante el proceso, los resumo en la siguiente tabla:

SOLUCIÓN
El contenido del RSS de Mosaic es de solamente diez artículos. Muchas categorías se presentarán siempre sin contenido. Descartar extraer el listado de categorías de un fichero estático y cargar dinámicamente las categorías existentes en el RSS
El RSS no especifica el autor del artículo El autor siempre aparece en la lista de categorías pero no siempre en el mismo orden, se elige la primera de ellas como el autor del artículo
Tanto las categorías (category) como las etiquetas (tag) son tratadas por igual en el RSS Se decide aplicar el mismo tratamiento a ambas en la aplicación
Las fechas de publicación de los artículos son tratadas como información alfanumérica y su formato no es estándar Se programa una clase a medida que transforme las fechas en campos de formato fecha (Date)
Composición del URL de una categoría Para mostrar la página web de una categoría, se utiliza el nombre de la misma y se aplica un proceso de normalización de sustitución de espacios y tildes. Ejemplo: categoría “Javier Melenchón”, la web correspondiente sería http://mosaic.uoc.edu/category/javier-melenchon/.
Paso de parámetros entre actividades Encapsulamiento de la estructura de datos principal mediante el patrón Singleton. Es una manera sencilla y elegante de evitar variables globales.
Navegación offline El punto anterior permite que los datos no se vuelvan a cargar cada vez que se accede a la aplicación.
¿Es necesario disponer de un teléfono con Android? Las pruebas se han llevado a cabo en emuladores de Android versiones 1.5 y 2.1. Asimismo se han hecho pruebas en dispositivos HTC Desire y Samsung Galaxy S i9000, ambos con la versión de Android 2.2. Aunque la mayoría de dispositivos disponen de botones “Volver” y “Salir”, éstos se han implementado en la aplicación para mantener la compatibilidad máxima posible.

Conclusiones

Estoy satisfecho con el trabajo realizado, aunque siempre es posible mejorar el producto, y este proyecto no es una excepción. Es importante destacar que el proyecto ha tenido una limitación de entrada, el formato del RSS de Mosaic. A partir de ahí se ha intentado exprimir su contenido al máximo para ofrecer al usuario una experiencia de uso satisfactoria.

Los objetivos planteados se han conseguido y, de alguna forma, se han ampliado. Android permite que la integración entre los diferentes elementos se haga de manera ágil y sencilla. El rendimiento de la ejecución en todas las pruebas ha sido bueno, realizándose una carga total del contenido del RSS en un tiempo aceptable.

Dentro de los estudios de Multimedia este proyecto tiene un gran componente técnico, me atrevería a decir que entre el 90 y el 95%, debido a, principalmente, la programación necesaria para llevarlo a cabo. El tanto por ciento restante englobaría una pequeña parte de diseño gráfico y de uso de herramientas de composición gráfica.

Espero que este trabajo pueda servir para que en un futuro se realicen otros similares y que de alguna manera hayamos abierto el camino. A continuación expongo algunas ideas que pueden servir a tal efecto.

Recursos utilizados

– Windows XP SP3 o Windows Vista SP1
– Java SDK v6.21
– Eclipse 3.5 (Galileo) R2
– Android SDK 1.5 o superior
– ADT (Android Development Tools ) para Eclipse. Plug-in necesario para poder programar en Android desde Eclipse.

Referencias

[1] ABLESON, Frank, COLLINS, Charlie y SEN, Robi. Android: Guía para desarrolladores; Madrid: Ediciones Anaya Multimedia, 2009.
[2] HASHIMI, Sayed, KOMATINENI, Satya y MACLEAN, Dave: Pro Android 2; Apress, 2010.
[3] MEIER, Reto. Professional Android 2 Application Development. WROX, 2010.
[4] Instalación del entorno de desarrollo: http://developer.android.com/sdk/installing.html
[5] Recursos Android para desarrolladores: http://developer.android.com/resources/index.html
[6] Lector de RSS en Android: http://www.ibm.com/developerworks/xml/tutorials/x-androidrss/
[7] Android Developer Guide: http://developer.android.com/guide/index.html
[8] Android Developer Reference: http://developer.android.com/reference/packages.html