Fin de semana maratoniano
El lunes es la final del CUSL a nivel de Granada y hay que intentar llevar el máximo de cosas hechas. Esta semana, Kora ha tenido un avance bastante importante (aunque creo que no suficiente), pero me queda bastante trabajo por delante. Para el lunes no estará la aplicación terminada ni mucho menos, pero sí en un nivel usable en el que se pueda apreciar cuál es su funcionalidad.
Esta semana he conseguido enganchar la aplicación con BlueRose, el middleware de comunicación (gracias a la gran ayuda de Carlos), y hemos estado haciendo pruebas con el manejo de dispositivos. Esta tarde hemos quedado para hacer unas pruebas y si todo funciona grabar un vídeo demostrativo para el lunes, aunque lo dudo seriamente ya que hay muy poca documentación sobre cómo conectar la biblioteca de domótica (y su servidor correspondiente) a los dispositivos. Por tanto, es bastante probable que solo pueda hacer una demostración con un simulador en Java+Swing que estoy desarrollando y cuya versión preliminar está ya en el repositorio.
En resumen, esta semana he conseguido desarrollar la siguiente funcionalidad:
- Conexión con BlueRose (aunque bastante preliminar).
- Añadir opción de B/N a los iconos.
- Implementar las primeras personalizaciones de los perfiles de usuario.
- Mejorar el funcionamiento de los KoraButton, y crear una clase "padre" que me permita crear nuevos componentes personalizables.
- Crear las especificaciones y descripciones de dispositivos. Las especificaciones son las estructuras que manda el servidor y que contienen toda la información relativa a un dispositivo. Las descripciones son formas de representación para tipos de dispositivos, incluyendo descripción de los iconos y controles personalizados.
- Carga de iconos adaptados al perfil de usuario que se haya elegido.
- Nuevo selector de colores más sencillo y más molongo.
Como siempre, capturas:
Captura de la prueba de carga de iconos (foto y alto contraste). Cuando no se encuentran los iconos especificados, se cargan los iconos por defecto.
Pruebas en la carga de iconos para controles.
Estructura y descripción de un DeviceRepresentation (fichero XML, estructura de la carpeta).
Como ya dije antes, me espera un fin de semana bastante apretado. Esta es la lista de cosas que tengo que hacer:
- Implementar el control deslizante personalizable.
- Terminar el simulador.
- Mejorar el tratamiento de los eventos de dispositivos.
- Añadir la carga de algunas personalizaciones más desde perfil de usuario, tales como:
- Carga de tipografías personalizadas.
- Cambio de colores para controles.
- Fijación de la orientación de la pantalla.
- Implementar resaltados básicos.
- Añadir sonidos sencillos a las acciones del usuario.
- Añadir TTS (text-to-speech) a las pulsaciones de los botones, como versión preliminar.
- Añadir algunas representaciones de dispositivo nuevas y crear los iconos correspondientes.
- Implementar los modos de paginación.
Y si tengo tiempo, que lo dudo, implementar una primera versión del control por barrido. Y por supuesto, hacer la presentación y la demostración para el lunes.
Y ya que tengo que crear tantos iconos, si me lee alguien con cierta capacidad pictórica, aprovecho para decirle que una ayudica por su parte sería muy agradecida
.
Carga de imágenes para usuarios

Los nombres de los usuarios son totalmente aleatorios
La tarde ha dado para esto, queda bastante vistoso
. Se puede elegir cualquier imagen de la tarjeta SD, que se redimensiona a un tamaño máximo de 128x128 y se almacena en la carpeta del programa.
También he reordenado la configuración de los perfiles de uso y he añadido un par de opciones nuevas, como bloquear el giro de la pantalla, añadir un nuevo tipo de barrido y el tamaño de los márgenes. Evidentemente solo está la interfaz de configuración y me queda llevarlo a la práctica, pero es un primer paso.
Lo que estoy implementando ahora que me tiene un poco atrancado es la gestión de dispositivos. Es posible que esta semana lo enganchemos con el middleware, y entre medias intentaré que al menos las opciones más sencillas del perfil de uso tengan efecto en el manejo del programa.
Cómo probar Kora
Hay dos formas de hacerlo:
Bajar el fichero .apk redistribuible e instalarlo en tu móvil Android
- Antes que nada, asegúrate de que puedes instalar aplicaciones de fuera del Market. Para ello, ve a
Ajustes->Aplicacionesy marca la casillaOrígenes desconocidos. - Descarga el último fichero .apk de esta carpeta (Kora-releases), cópialo a la tarjeta SD de tu móvil e instálala con Astro, AppMonster o la aplicación que prefieras.
- Ejecútala
.
Descargar el código fuente del proyecto y ejecutarlo en un emulador o en un teléfono (código más reciente)
- Si no tienes Eclipse y el SDK de Android instalados, hazlo siguiendo estas instrucciones.
- Abre Eclipse e indícale al plugin subclipse la localización del repositorio: Ve a
Window->Open perspective->Other..., y en el diálogo que se abre,SVN Repository Exploring. En la vista que se abre, en la vista superior izquierda (pestañaSVN Repositories), pincha con el botón derecho y eligeNew->Repository Location. En el diálogo que se abre, introduce en el campo URL:
https://forja.rediris.es/svn/cusl4-kora/trunky pulsaFinish. - En la entrada que se ha creado, pulsa con el botón derecho y elige
Checkout. PulsaFinishen la ventana que se abre.

- Ve a la perspectiva de Java (se elige arriba a la derecha), elige el proyecto y pulsa el botón de
Playpara ejecutar el proyecto. Te aparecerá una ventana para elegir cómo ejecutarlo. EligeAndroid applicationy pulsa OK. - Si todo está bien configurado, se abrirá una ventana con el emulador y a continuación se cargará el proyecto. La primera vez tarda bastante en cargar porque tiene que iniciar la máquina virtual, el sistema operativo y la interfaz de usuario. Además, tiene que instalar la aplicación, así que conviene no cerrar esa ventana mientras se trastea el proyecto, para que sucesivas ejecuciones no tarden apenas.
Cómo instalar Eclipse para desarrollar sobre Android
Ojo: este post es muy antiguo y es posible que algunas indicaciones no funcionen para versiones actuales de software (la versión actual de Java es la 1.7, y de Eclipse, la 3.6)
Nota: solo he probado la instalación para Windows y para GNU/Linux, si ves alguna errata, por favor, avísame. Al final he tenido que modificar las distribuciones de Yoxos.com, pues aún incluían una versión antigua del plugin para Android.
- Instala la JDK versión 1.6. En GNU/Linux puedes hacerlo fácilmente desde el gestor de paquetes, para MacOS y Windows puedes bajarla de aquí: http://java.sun.com/javase/downloads/widget/jdk6.jsp
- Descarga la versión del SDK de Android correspondiente para tu Sistema Operativo.
- GNU/Linux:
- Para cualquier distribución: te recomiendo que sea sobre una de 32 bits, pues para una distro compilada para x86_64 es posible que tengas que instalar las bibliotecas para 32 bits. Descomprime el fichero y mueve la carpeta resultante a tu carpeta personal: /home/<tu_usuario>.
- Para Arch Linux es suficiente con instalar desde el AUR los paquetes android-sdk, eclipse-android y todas sus dependencias. Esto puede hacerse de forma muy fácil y automática mediante yaourt:
yaourt -S android-sdk eclipse-android eclipse-subclipse subversion --noconfirm
El paquete se instala bajo /opt/android-sdk y hay que cambiarle el propietario:
sudo chown -R <usuario>:users /opt/android-sdk-linux
Si has seguido este procedimiento puedes pasar directamente al paso 5, pues el resto de dependencias se instalan automáticamente.
- Windows: descomprime el fichero en C: de forma que la carpeta resultante sea
C:\android-sdk-windows. - MacOS X: descarga este fichero y descomprímelo en tu carpeta de usuario.
- GNU/Linux:
- Descarga Eclipse. Estas son versiones preparadas, descargadas desde yoxos.com(y modificadas por mí) que incluyen Subclipse y el plugin de Android.
- Para GNU/Linux: 32 bits, 64 bits.
- Para Windows.
- Para OSX.
- Descomprime el fichero de Eclipse.
- Abre el ejecutable de Eclipse, que está dentro de la carpeta descomprimida. Si instalaste desde repositorios, simplemente abre Eclipse desde el menú de aplicaciones.
- Una vez abierto Eclipse, ve a
Window->Preferences, y en el diálogo que abre, en el apartadoAndroid, rellena el campoSDK Location. Ya sea introduciendo la ruta a mano o mediante el botónBrowse, introduce la ruta donde hayas descomprimido el fichero del paso 1 (por tanto, depende de tu sistema operativo).

- Descarga los paquetes necesarios para poder compilar y ejecutar el proyecto. Para ello, ve a
Window->Android SDK and AVD Manager, en el diálogo que se abre, eligeInstalled Packagesa la izquierda, y pulsa el botónUpdate all. En el diálogo que se abre, marca los que necesites. Para Kora solamente es necesario instalar "SDK Platform Android 1.6" y "Documentation for Android SDK, API 7, revision 1". Si estás en Windows puede ser interesante instalar el driver USB para probar sobre dispositivos físicos.

- Crea un dispositivo virtual en el que probar las aplicaciones. En esta misma ventana (
Android SDK and AVD Manager), elige el apartadoVirtual Devicesy pulsaNewpara crear uno nuevo. Ponle un nombre, elige la versión de Android que soportará y ponle un tamaño de al menos 256 megas de almacenamiento a la tarjeta SD. El resto de opciones pueden quedarse por defecto. - Ya puedes comenzar un proyecto nuevo o cargar uno existente.










