Aplicación Android
Vamos a mostrar el desarrollo completo de una aplicación en Android. Es una aplicación sencilla: se introduce horas y minutos para iniciar una cuenta atrás que al finalizar emitirá una alarma. El objetivo es desarrollar una aplicación que controle el tiempo que dura una charla en una conferencia. De forma auditiva y visual deberá de realizar indicaciones según finalice el tiempo.
Flujo de la aplicación
v 0.1:
La entrada en la aplicación se realiza desde el icono de "Mobile Time Care". Nada más iniciar la aplicación aparece una interfaz para introducir las horas y minutos y un botón para iniciar la cuenta atrás. Tras la introducción de los datos se pulsa sobre el botón de inicio de la cuenta atrás y se muestra la cuenta atrás con un botón de cancelar.
v 0.2:
Se añadirá la opción de seleccionar el sonido que se emitirá cuando acabe la cuenta atrás.
Otras funcionalidades futuras: programar un sonido final para los últimos n-segundos (p.e. 10).
Diseño de la interfaz
- Reuso de actividades
- Funcionalidad
- Licencias
- Navegación del usuario
Selección de la plataforma
Actualmente tenemos como plataforma implantada más avanzada Android 1.6 y ya se ha publicado la versión 2.0 de la plataforma. Voy a elegir como plataforma la 1.6 y después la evolucionaremos a 2.0.
Entornos de desarrollo
Vamos a desarrollar desde la línea de comandos con Android SDK 1.6. Luego pasaremos a 2.0 y analizaremos el cambio.
Vamos a utilizar Google Code como herramienta de gestión de control de código.
Creación del proyecto
Utilizamos la herramienta del SDK para crear el proyecto desde la línea de comandos:
android create project --target 2 --name MobileTimeCare --path . --activity Countdown --package es.acsblog
Cambiamos en "AndroidManifest.xml" la cadena ".ACTIVITY_NAME" por el nombre de la actividad, "Countdown", en "src/es/acsblog/Countdown.java" el nombre de la clase por "Countdown", en "res/values/strings.xml" lo mismo (todo esto creo que es fallo en el SDK) y podemos ya construir nuestra aplicación vacía.
ant debug Buildfile: build.xml ... BUILD SUCCESSFUL Total time: 4 seconds
Podemos ya probar en el emulador la aplicación vacía. Iniciamos el emulador e instalamos la aplicación:
tools/emulator -avd a16.avd adb install bin/MobileTimeCare-debug.apk
Vamos a subir al subversion el entorno de trabajo pero sin los binarios.
mobile-time-care$ rm -rf gen/ bin/ mobile-time-care$ svn add * mobile-time-care$ svn ci ... Commit de la revisión 3.
Comienzo del desarrollo
Ya tenemos todo el entorno de desarrollo listo y comienza de verdad el desarrollo. Lo primero es aprender a pintar una interfaz desde la que el usuario pueda introducir las horas y segundos para la cuenta atrás.
Para desarrollar la interfaz gráfica lo mejor es utilizar la descripción en XML de la misma y para localizar los mejores widgets, lo mejor es estudiar los ejemplos que vienen en "API Dedmos" en el SDK y que es recomendable tener dentro del emulador. Vemos un ejemplo dentro de "App" para "Alarmas" que incluye la actividad "Alarm Controller" y el servicio "Alarm Service". Pero el "gui" no nos vale. Seguimos buscando.
Después de ver bastantes ejemplos del API encontramos un widget que nos puede valer, aunque quizá no exactamente. Es el que viene en el ejemplo "Views/Date Widgets/1.Dialog" que nos permite ajustar la hora, introduciendo el número de horas y minutos. Tenemos también el ejemplo de "Views/Chronometer" que también nos puede ser útil. Para ver todos los widgets disponibles podemos irnos al API de los widgets.
Además de los ejemplos del API tenemos decenas de aplicaciones de Android que han sido publicadas con licencia libre en el repositorio de código fuente git de Android (platform/packages/apps/).
Estamos documentando el reuso de interfaces en AndroidWidgets.
Finalmente la reutilización de los widgets ha sido un éxito y no ha sido muy compleja una vez que se conoce como funcionan los ficheros de recursos dentro del directorio "res". La recomendación es empezar con el widget más básico la adaptación e ir yendo hacía los widgets más complejos.
Aplicación lista para descarga
Depuración de aplicaciones Android
Durante el ciclo de desarrollo nos iremos encontrando con problemas de ejecución. Vamos a ir viendo cuales son las mejoras estrategias para depurar las aplicaciones dentro del emulador.
El primer comando básico es "adb logcat" que nos permite ver las trazas que se producen en el emulador y por ejemplo, ver dónde se ha producido una excepción dentro de nuestra aplicación.