Archivo del sitio

Como hacer aplicaciones Android de calidad #bbzgz

La semana pasada me invitaron a participar como ponente en el II Betabeers de Zaragoza, como no tenía mucho tiempo para preparar el evento se me ocurrió utilizar las notas que tenía del pasado Google Devfest y mis propias experiencias para preparar una charla sobre como mejorar nuestras aplicaciones Android y de la necesidad de incorporar diseñadores en nuestros desarrollos.

Esta es la presentación que utilicé:

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).

Lee el resto de esta entrada

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

zgzpolen

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

Taller de Android en Zaragoza GTUG

zgtug_android
Pedro Fraca (Señor X) y Jose Cortes (@jbeerdev), dos de los cracks de Frogtek, me comentaron que estaban organizado el Grupo de Usuarios de Tecnologías Google en Zaragoza (@gtug_zaragoza) y que habían pensado en montar algo referente a Android para el primer evento. Viniendo de donde venía la propuesta no me lo pensé dos veces y enseguida me subí al barco.

Montamos un taller de cuatro horas para explicar las nociones básicas de Android desarrollando una aplicación desde cero hasta su publicación en el Market (la app permite ver los mensajes del grupo y ya puedes descargarla en tu móvil)

Pedro consiguió a través de la fundación Joven Empresa Innovadora que nos dejaran el Zaragoza Digital Water Pavillion para el evento.

Al ser un dia por la tarde, entre semana y con partido de fútbol, pensaba que “seriamos cuatro frikis”, pero la respuesta de la gente nos sobrepasó. Cuando llevábamos 75 inscripciones tuvimos que cerrar el cupo ya que la sala era para unas 30 personas (las dividimos en dos sesiones: 6 y 7 de abril).

Por lo que leí en Twitter y los resultados de la encuesta que pasé al final creo que la gente quedó contenta.

Personalmente yo lo pasé muy bien, llamarme masoka, pero de vez en cuando uno tiene añoranzas de dar clase ;-) además el prepararlas me ayuda a aclarar las ideas.

También me sirvió para reencontrarme con viejos conocidos, conocer a mucha gente interesante y desvirtualizar a unos cuantos nicks: Tuvimos a gente de Cachirulo Valley como @ivanloire y @plablojimeno, a gente que ayudo a organizarlo como misstechin, a asiduos de mi timeline como @eduardofilo, a no tan asiduos @Chusezgz y @Luis_solanas, a un ejercito de frogtekianos (&Cia) @jbeerdev @rubenbpv @papajulio @gualison @TuchyESPB,  a otros much@s (gracias por todo)

Mención especial para @rubenbpv, que entre cervezas y tapas me descubrió EL MANIFIESTO ;) y me enseño lo cool que puede ser un Android con Miui

De izquierda a derecha (Rubén Bernárdez, Jose Cortes, Pedro Fraca, Francho Joven)

De izquierda a derecha (Rubén Bernárdez, Jose Cortes, Pedro Fraca, Francho Joven). Foto de Pablo Jimeno

Si tuviera que resumir la experiencia en una sola frase diría (aunque suene a topicazo): creo que ha sido el comienzo de una bonita amistad ;-)

P.D: Ya suenan campanas para el próximo zGTUG ¿quién dijo Google App Engine?

Artículos relacionados:

Truco Android: Un solo código, varias aplicaciones

android_compilando_ant
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

benchmarking

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 ;)

Truco Android: Mostrar la versión / revisión en nuestro código

Este código sirve para obtener el nombre de la versión y revisión de nuestra app. Muy útil para ponerlo en los dialog de “About”.

Context appContext = getContext().getApplicationContext();
PackageInfo info = appContext.getPackageManager().getPackageInfo(appContext.getPackageName(), 0);
String version = info.versionName + " (release " + info.versionCode + ")";

Truco Android: menú compartir

Hoy en día para ser un 2.0 auténtico hace falta compartir todo ;-) por eso, he decidido añadir esta funcionalidad a alguna de mis aplicaciones Android.

La idea es que cuando el usuario pulse el botón compartir se abra un desplegable con las aplicaciones “sociales” (Twitter, Facebook, email, sms…) que tenga instaladas y a través de ellas suba el contenido (que irá precargado).

Había empezado a programar esa solución, pero buscando un poco me he encontrado con este post que dá una solución muy sencilla y efectiva.

Con la idea de reutilizar el código lo he convertido en una clase estática que puedo llamar directamente desde cualquiera de mis “Activity”

/**
 * Share a content using the user's installed apps
 *
 * Thanks to : http://labs.emich.be/2010/01/23/how-to-send-to-twitter-or-facebook-from-your-android-application/
 *
 * @author http://francho.org/lab/
 *
 */
public class Social {
	/**
	 * Open a contextual Menu with the available applications to share
	 *
	 * @param the Context (to open the menú and the new activity)
	 * @param the subject
	 * @param the text
	 */
	public static void share(Context ctx, String subject,String text) {
		 final Intent intent = new Intent(Intent.ACTION_SEND);

		 intent.setType("text/plain");
		 intent.putExtra(Intent.EXTRA_SUBJECT, subject);
		 intent.putExtra(Intent.EXTRA_TEXT, text);

		 ctx.startActivity(Intent.createChooser(intent, ctx.getString(R.string.tit_share)));
		}
}
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 995 seguidores