Android 101

Android logo

Android Logo

Desarrollando para Android ando.

He empezado a desarrollar para Android por pura necesidad. El origen de dicha necesidad se encuentra en el browser de Android. Os lo explico.

Resulta que haces una semanas empecé el desarrollo web para Android. Estaba haciendo un formulario de registro y es necesario que el usuario pueda subir una fotografía. Qué sorpresa me llevé cuando al previsualizar el formulario, el campo destinado para seleccionar el fichero mostraba: “Uploads disabled“.

¡Qué chasco! Sabía que el Mobile Safari de iPhone/iPod no lo permitía… pero ¿tú?¿Android?

En fin, después de buscar en opciones de seguridad sin éxito y ver los cientos de “WTF!” que circulan por los foros del androide, comprobé que iba a necesitar a empezar a desarollar con el Android SDK. Android me ha obligado ha usar su SDK, desarrollar una aplicación y subirla a su Android Market. Me cuestiono el porqué de la deshabilitacion de los uploads. ¿sera por cuestiones de capacidad? ¿O más bien cuestiones de marketing?

Lo primero que hice fue entrar en la web de Android, bajarme su SDK, bajarme el Eclipse, preparar el entorno, hacer un proyecto “hello world” y ejecutarlo en el emulador.

Para hacer estos pasos no me llevo más de 2 horas y media contando con la descarga. El tamaño aproximado de mi directorio de trabajo ronda el giga (Java+Eclipse+Android).

Para estar más tranquilo psicológicamente, queria comprobar que el hello world se ejecutaba sin problemas en mi HTC Magic. Cogí un cable comercial USB-micro, lo conecté, le dí a “Ejecutar” y de repente apareció un dialogo con el número de serie mi smartphone. Se ejecutó sin problemas.

Antes de empezar a codificar ni una línea si quiera, tenía muchas dudas sobre el proceso de subida y aprobación de aplicaciones al Android Market. Resulta que el proceso no es tan complejo ni largo como el análogo para el App Store. Eso sí, el pagar no te lo quita nadie. Unos $25 USD  (aprox. 17€). La primera vez que pago algo a Google en 10 años. La verdad es que no me parece caro, menos si lo comparramos con los $299 del App Store de Apple.

Iba siendo hora de teclear algo.

Hay una cosa que tengo clara en todos los desarrollos (libres) que hago: no reinventar la rueda.

El propósito de mi aplicación es bien sencillo: formulario de registro de usuario con subida de fotos, pantalla de login y ejecución del navegador web con una redirección.

Decidí que la mejor forma de desarrollar la aplicación a la vez de ir aprendiendo Android, era hacer un desarrollo por milestones que se pueden resolver en sesiones de una hora.

Estos fueron los hitos fijados:

  1. Modelo de programación.
  2. Botón con manjeador.
  3. Hacer un Http Post.
  4. Hacer un Http Post multipart/form-data.
  5. Acceso a la galeria de fotos.
  6. Layout de aplicacion.
  7. Creación de sub-actividades.
  8. Lanzar el browser.
  9. Depuración.
  10. Subida al Android Market.

Hoy voy a tratar sólo el primer hito. Considero que es el más importante.Lo primero que hace el gestor de aplicaciones es examinar el AndroidManifest.xml.  Como indica la extensión, se trata de una “Declaración de Intenciones” escrito en XML.

Dos conceptos aparecen en el párrafo anterior:

Activity: es la clase asociada a una pantalla de la aplicación. Al menos es necesaria una clase Activity. Al ejecutar la aplicación, Android se encargará de instanciar una clase de la activity raiz. Android sigue el modelo MVC, modelo-vista-controlador. Respecto a la Activity, tenemos por un lado un fichero XML donde se especifica la UI (vista) y un fichero Java donde se encuentra la clase de nuestra Activity que hereda de Java. El modelo de desarrollo ideal, consiste en crear un layout con todos los elementos de interfaz que usemos y gestionar su callback en la clase asociada.

Intent: para mi es la clase estrella, la clase “no reinventar la rueda”. Lo entiendo como un modelo “ONG”. Una aplicación declara una serie de habilidades que puede hacer en favor de otra aplicaciones mediante Intents. Se entiende mejor con un ejemplo. Si mi aplicación necesita obtener la ruta de un imagen dentro de la Galeria, basta con lanzar un Intent, especificando nuestro anhelo “Eh,alguien puede sacar el diálogo de la galeria y devolverme la ruta del fichero que el usuario ha clickeado” (es casi algo así).

Hay otros tipos de clases, como servicios en background, pero creo que estas son las más usadas.
Os dejo el enlace de un ejemplo donde se usan.

En la siguiente entrega, empezaremos a darle forma a la aplicación: “Hello, uploads“.

Translate to:English
MenefanteMenéame TwitterTwitter

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: