Archivo de la categoría: Android
Desarrollos referentes a Android la plataforma de Google para móviles
El juego de la vida en Android (Conway’s Game of Life)
En el Global day of Coderetreat me quedé con las ganas de terminar el Juego de la Vida de Conway ya que después de cada iteración borrábamos el código.
Así que en mis ratos libres me he dedicado a desarrollarlo en Android. Falta pulir la interface pero lo que es el motor del juego está terminado.
La programación está basada en TDD (primero he escrito el test y luego el código que lo soluciona).
Android: creando nuestras propias Views

Hace unas semanas una conversación en Twitter con @aeliasnet me sirvió para darme cuenta lo que había cambiado mi forma de programar Android. Llevo ya unos cuantos meses (desde el taller de @jbeerdev) intentando plasmar las enseñanzas del libro Clean Code del “tito Bob“.
Una de las cosas que estoy haciendo para mantener mi código limpio es crear mis propios objetos View reutilizables y delegar en ellos la lógica que les afecta. De esta forma, entre otras cosas, consigo tener unas clases Activity mucho más claras.
Veamos un ejemplo: imaginemos que tengo que mostrar la nota de un alumno con los siguientes datos: nombre del alumno, asignatura, nota numérica y nota en texto. Además si es un suspenso la nota debe estar en rojo.
Antes me crearía un layout con todos los datos y en mi Activity, a base de findById() rellenaría los campos con los datos correspondientes. Mi activity también contendría la lógica necesaria para el cambio de colores.
Ahora lo que hago es crearme un “compound view” que incrusto directamente donde corresponda en mi layout xml (como si fuera un objeto View más) y desde mi Activity le cargo los datos usando los métodos setter que he creado como interface.
Veamos como se haría este ejemplo paso a paso…
Lee el resto de esta entrada
ZgzPolen: una aplicación Android paso a paso

En pasado jueves (14-Julio-2011) ejercí de maestro de ceremonias en seminario sobre Android organizado por Exitae en y en el que colaboraron el Ayuntamiento de Zaragoza y El Androide Libre.
Lee el resto de esta entrada
Android: ejemplos de llamadas a Intents
Los filtros de Intents son, desde mi punto de vista, una de las características más potentes de Android. Nos permiten reutilizar componentes de otras aplicaciones usando muy pocas líneas de código.
“¿Para que voy a programar una Activity de captura de fotos cuando puedo llamar a la de la aplicación de cámara incluida en el sistema?”
Os dejo un ejemplo sencillo en el que se realizan varias llamadas para ilustrarlo:
Lee el resto de esta entrada
Android: Usando ContactsContract para sacar el listado de teléfonos de la ageda
Uno de los primeros códigos de Android que teclee fué un buscador de contactos… anda que no han pasado cosas desde entonces
Uno de los principales cambios introducidos en Android 2.0 (Api 5) fue la nueva organización de los contactos y la superclase ContactsContract que permite acceder a los datos de la agenda desde diferentes puntos de vista.
El siguiente ejemplo ilustra uno de ellos. Se trata de crear una Activity que permita seleccionar un teléfono de la agenda para que sea utilizado por otra. Para ello hemos creado un ListActivity que mediante una consulta a la agenda obtiene el listado de teléfonos disponible junto con el nombre del contacto.
Cuando el usuario pulsa sobre uno de ellos, la actividad del selector se cierra devolviendo el número de teléfono elegido.
Ejemplo de uso de la libreria de pagos de Paypal para Android

En uno de los proyectos Android del trabajo tenemos que incorporar pagos a través de Paypal.
La primera idea que hemos tenido ha sido intentar usar un componente webview que cargara el formulario Paypal, sin embargo la web no se mostraba todo lo bien que era de esperar.
Investigando alternativas, he visto que había una librería oficial de PayPal nativa para Android que facilita mucho las cosas, y con muy pocas lineas de código se puede crear un pago a través de este sistema.
El siguiente código es un ejemplo sencillo de uso, basado en el ejemplo que trae el SDK de Paypal. Le he limpiado el código dejando un solo ejemplo de uso (el pago sencillo), y lo he reconvertido para que use una tarea asíncrona en vez de un handler (no se porque, pero me resulta mas sencillo de usar).
La idea es que la librería debe inicializarse en segundo plano, ya que conectacon los servidores de Paypal. Una vez todo está ok, creamos un boton de pago, que al ser pulsado lanza una Activity que incorpora la propia librería pasando los datos del pedido, y esperamos su respuesta.
Para configurar el entorno de pruebas (sandbox) deberemos seguir las instrucciones de este manual.
Lee el resto de esta entrada
Código Android: TextView con sugerencias de direcciones postales
Para mejorar la experiencia de usuario es una buena idea añadir ayudas como las sugerencias de autocompletado. En este post vamos a ver un código de ejemplo que va mostrando sugerencias con direcciones postales reales conforme escribimos en un TextView.
Para ello usaremos la clase Geocoder incluida en el SDK que iremos invocando conforme el usuario teclee su texto.
Existen varios enfoques para poder hacer esto: @jbeerdev me ha sugerido usar un SuggestionProvider asociado a un SearchManager tal y como describen en el blog de Frogtek, es sin duda una idea interesante que tendré que investigar.
La solución que he implementado se basa en crear un Adapter que se encarga de obtener la lista de sugerencias y asociarlo a una vista de tipo AutoCompleteTextView. Cuando el texto va cambiando realizaremos llamadas al adapter para que recargue la lista de sugeridos en un segundo plano (gracias a un AsyncTask).
El funcionamiento de este enfoque me ha sorprendido gratamente ya que el tiempo de respuesta es menor del que me esperaba. También creo que la solución basada en SearchManager es bastante interesante y merece ser estudiada.
¿Conocéis algún otro enfoque posible? vuestros comentarios serán bienvenidos ![]()
Lee el resto de esta entrada
Truco Android: Un solo código, varias aplicaciones

En muchas situaciones necesitamos generar varias aplicaciones a partir de un mismo código fuente. El caso típico es cuando queremos sacar una versión lite, con menos funcionalidades para abrir boca y que los usuarios se animen a comprar la versión pro que es de pago
Una forma de hacerlo es mantener dos proyectos separados pero, a la larga, este sistema acaba volviéndose contra nosotros ya que nos obliga a aplicar los cambios por duplicado.
Buscando una forma de simplificar esta tarea rutinaria me topé con este a artículo que me puso sobre la pista:
La idea es hacer un único proyecto que contenga toda la funcionalidad y luego usar Ant para compilarlo y generar las dos versiones (lite y pro).
Con unos mínimos cambios en el código y un pequeño script conseguí automatizar totalmente la generación de los “sabores” de mi aplicación.
Estos son los pasos a realizar….
Lee el resto de esta entrada
Truco android: como generar estadísticas de uso de nuestras aplicaciones

Las estadísticas de visitas son una herramienta indispensable para cualquier webmaster.
Los programadores Android recibimos un cierto feedback gracias a la información que nos proporciona el Market (descargas, valoraciones, comentarios), también podemos tomar el pulso a nuestros usuarios mirando los comentarios que dejan en foros o redes sociales.
Gracias a un tweet me he topado con este post que explica como usar Google Analytics dentro de nuestras aplicaciones Android, con lo que conseguiremos una información más detallada de usos, perfiles de usuarios, patrones de navegación, etc. Básicamente consiste en usar una librería de conexión con Google Analytics y generar una llamada con un id “de página” distinto en cada una de nuestras activities.
Simple, sencillo y práctico
Liberado el código Android de ZgzBus bajo licencia GPLv3
ZgzBus es la primera aplicación Android que subí al Android Market hace unos meses. Empezó siendo una aplicación para uso personal, un código con el que experimentaba las diferentes formas de hacer cosas en Android (handlers, asynctask, drawables…) y ha terminado siendo una aplicación en toda regla.
Gracias a Twitter, la prensa escrita, blogs, al boca a boca y al propio market hace unos días superamos las 1000 descargas (todo un logro para una aplicación tan limitada en cuanto al público objetivo). Para celebrarlo he decidido liberar la aplicación bajo licencia GPLv3
Así pues, ahora cualquier programador puede desarrollar nuevas aplicaciones basándose en el código fuente (siempre y cuando cumpla los requisitos de la licencia).

