Escolar Documentos
Profissional Documentos
Cultura Documentos
antoniodominguez@guadalux.org @adominguezc
Segn los ms prestigiosos estudios de mercado, el 75 % de los dispositivos mviles vendidos a nivel mundial en el tercer trimestre de 2012, poseen sistema operativo Android. En este periodo se han vendido 136 millones de unidades, con una evolucin respecto al ao pasado de un 91,50 %.
Mercado de 333,6 millones de dispositivos en todo el mundo con Android. 68,2 % de cuota de mercado, estimando que a finales del 2012 ocupe un 75%.
Ventajas de desarrollar en Android Aunque la mayora de las aplicaciones estn escritas en Java, de forma nativa a travs del SDK de Android, tambin podemos desarrollar aplicaciones web en HTML5, CSS3 y Javascript o incluyendo cdigo C C++ a travs del NDK.
Aplicaciones Android
A diferencia de otras plataformas, desarrollar con Android no supone costos en licencias y contamos con mltiples frameworks de desarrollo gratuitos y de cdigo abierto. El SDK de Android est a disposicin de la comunidad en todas las plataformas existentes.
A diferencia de otras plataformas, desarrollar con Android no supone costos en licencias y contamos con mltiples frameworks de desarrollo gratuitos y de cdigo abierto. El SDK de Android est a disposicin de la comunidad en todas las plataformas existentes.
Java JDK Entorno de desarrollo integrado (IDE) Eclipse SDK Android Plugin Android Development Tools (ADT) para Eclipse Dispositivo Virtual Android (AVD)
Configuracin del entorno de desarrollo Paso 1.- Descarga e instalacin de Java 7 JDK
Podemos descargarlo desde la web de Oracle o bien mediante apt, incluido en los repositorios de las ltimas distribuciones: sudo apt-get install openjdk-7-jdk openjdk-7-jre
aplicaciones
para
/src
Contiene todo el cdigo fuente de la aplicacin, cdigo de la interfaz grfica, clases auxiliares, etc Inicialmente, Eclipse crear el cdigo bsico de la pantalla (Activity) principal de la aplicacin, siempre bajo la estructura del paquete Java definido.
/res
Contiene todos los ficheros de recursos necesarios para el proyecto: imgenes, vdeos, cadenas de texto, etc. Estarn organizados por tipos, siendo la estructura de carpetas la siguiente: /res/drawable Contiene las imgenes de la aplicacin. Para utilizar diferentes recursos dependiendo de la resolucin del dispositivo, se suele dividir en varias subcarpetas:
/res/layout/
Contiene los ficheros de definicin de las diferentes pantallas de la interfaz grfica. Para definir distintos layouts dependiendo de la orientacin del dispositivo se puede dividir en dos subcarpetas:
Contiene la definicin de los mens de la aplicacin /res/values/ Contiene otros recursos de la aplicacin como, por ejemplo, cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), etc... /res/xml/ Contiene los ficheros XML utilizados por la aplicacin. /res/raw/ Contiene recursos adicionales, normalmente en formato distinto a XML, que no se incluyan en el resto de la carpeta de recursos.
/gen
Contiene una serie de elementos de cdigo generados automticamente al compilar el proyecto. Cada vez que generamos nuestro proyecto, la maquinaria de compilacin de Android genera por nosotros una serie de ficheros fuente en Java dirigidos al control de los recursos de la aplicacin.
El ms importante es el fichero R.java y la clase R. La clase R contendr en todo momento una serie de constantes con los ID's de todos los recursos de la aplicacin incluidos en la carpeta /res, de forma que podamos acceder fcilmente a estos recursos desde nuestro cdigo a travs de este dato. Por ejemplo, la constante R.drawable.ic_launcher contendr el ID de la imagen ic_launcher.png contenida en la carpeta /res/drawable/.
/assets/
Contiene los dems ficheros auxiliares necesarios para la aplicacin (y que se incluirn en su propio paquete), por ejemplo, ficheros de configuracin, de datos, La diferencia con los ficheros incluidos en la carpeta /res/raw/ es que para stos se generar un ID en la clase R y se deber acceder a ellos con los diferentes mtodos de acceso a recursos. Para los contenidos en la carpeta assets no se generar ID y se podr acceder a ellos mediante su ruta como a cualquier otro fichero del sistema. Usaremos uno u otro segn las necesidades de nuestra aplicacin.
AndroidManifest.xml
Contiene la definicin en XML de los aspectos principales de la aplicacin, como su identificacin (nombre, versin, icono...), sus componentes (pantallas, mensajes ), y permisos necesarios para su ejecucin. ADT contiene un editor para este fichero llamado AndroidManifest Editor.
En otros entornos como Java o .NET estamos acostumbrados a manejar conceptos como ventana, control, eventos o servicios como los elementos bsicos para construir una aplicacin. En Android vamos a disponer de esos mismos elementos pero con un pequeo cambio en la terminologa y el enfoque. Vamos a hacer un breve repaso de los componentes principales en desarrollo Android.
Activities
Representan el componente principal de la interfaz grfica de una aplicacin Android. Representa una ventana en cualquier otro tipo de lenguaje visual.
View
Componentes bsicos con los que se construye la interfaz grfica de la aplicacin. Seran los controles en Java o .NET. Android incorpora una gran cantidad de controles bsicos, aunque podemos extender la funcionalidad de estos o crearlos personalizados:
Service
Componentes sin interfaz grfica, se ejecutan en segundo plano, al igual que los de otro sistema operativo. Pueden realizar cualquier tipo de acciones como actualizar datos, lanzar notificaciones, o mostrar elementos visuales (activities), si se necesita en algn momento la intervencin del usuario.
Content Provider
Un content provider es el mecanismo que utiliza Android para compartir datos entre aplicaciones. Podemos compartir datos de nuestras aplicaciones sin mostrar detalles sobre su almacenamiento interno, su estructura, o su implementacin. Nuestra aplicacin podr acceder a los datos de otra a travs de los content provider definidos. Una aplicacin que acceda a los contactos de nuestra agenda utilizar content provider, por ejemplo.
Broadcast Receiver
Es un componente destinado a detectar y reaccionar ante determinados mensajes o eventos globales generados por el sistema, como por ejemplo Batera baja, SMS recibido, tarjeta SD insertada, o por otras aplicaciones (cualquier aplicacin puede generar mensajes (intents) broadcast, es decir, que no van dirigidos a una aplicacin concreta sino a cualquiera que quiera escucharlo).
Widget
Elementos visuales, normalmente interactivos, que pueden mostrarse en la pantalla principal (home screen) y recibir actualizaciones peridicas. Muestran informacin al usuario directamente sobre la pantalla principal.
Intent
Elemento bsico de comunicacin componentes Android descritos. entre los distintos
Mensajes o peticiones que son enviados entre los distintos componentes de una aplicacin o entre distintas aplicaciones. Mediante un intent se puede mostrar una actividad desde cualquier otra, iniciar un servicio, enviar un mensaje broadcast, iniciar otra aplicacin ...
Views
Broadcast receivers
Services
Widgets
Intents
Lgica
/src/com.holausuario/HolaUsuario.java
Creamos una nueva clase para la segunda pantalla de la aplicacin anloga a la primera, llamada Mensaje que extienda de Activity y que implemente el mtodo onCreate indicando que utilice la interfaz definida en R.layout.mensaje:
Obtenemos una referencia a los diferentes controles de la activity principal que queremos manipular (cuadro de texto y botn). Para ello, utilizamos el mtodo findViewById() indicando el ID de cada control, incluidos en la clase R:
Una vez que tenemos acceso a los diferentes controles, implementamos las acciones a tomar cuando pulsemos el botn de la pantalla, implementando el evento onClick de dicho botn:
Utilizaremos el intent para llamar a una actividad desde otra de la misma aplicacin, pasaremos al constructor una referencia a la propia actividad llamadora (HolaUsuario.this), y la clase de la actividad llamada (FrmMensaje.class). Para pasar a la actividad el nombre del cuadro de texto creamos un objeto Bundle, que contendr una lista de pares clave-valor con toda la informacin a pasar entre las actividades. Aadiremos un dato de tipo String mediante el mtodo putString(clave, valor) y aadiremos la informacin al intent mediante el mtodo putExtras(bundle).
Paso 5.- Implementacin lgica activity secundaria Ampliaremos el mtodo Oncreate obteniendo las referencias a los mtodos manipulados (etiqueta de texto). Recuperaremos la informacin pasada desde la actividad principal y la asignaremos como texto de la etiqueta mediante el mtodo getIntent() y recuperamos su informacin asociada (objeto Bundle) mediante el mtodo getExtras(). Construiremos el texto de la etiqueta mediante el mtodo setText(texto) y recuperamos el valor de la clave almacenada en el objeto Bundle meduante getString(clave).
Utilizaremos el intent para llamar a una actividad desde otra de la misma aplicacin, pasaremos al constructor una referencia a la propia actividad llamadora (HolaUsuario.this), y la clase de la actividad llamada (FrmMensaje.class). Para pasar a la actividad el nombre del cuadro de texto creamos un objeto Bundle, que contendr una lista de pares clave-valor con toda la informacin a pasar entre las actividades. Aadiremos un dato de tipo String mediante el mtodo putString(clave, valor) y aadiremos la informacin al intent mediante el mtodo putExtras(bundle).
Paso 6.- Definicin AndroidManifest.xml Definiremos las actividades que componen nuestra aplicacin:
Guas de aprendizaje
Referencia de la API
Herramientas de desarrollo
Github (www.github.com)
SourceForge (www.sourceforge.net)
SourceForge (www.sourceforge.net)
Para empezar a publicar aplicaciones en Google Play es necesario abrir una cuenta como desarrollador http://developer.android.com/intl/es/distribute/index.html, previo pago de 25,00 $ lo cual nos da derecho a poder publicar nuestras aplicaciones mediante la consola de desarrollador Android. En Google Play podemos publicar aplicaciones de pago o gratuitas, pudiendo obtener ingresos mediante la venta de aplicaciones, por publicidad o por la prestacin de otros servicios. Para la publicacin de la aplicacin, slo necesitaremos el paquete .apk que encontraremos en la carpeta bin del proyecto compilado.
SenchaTouch (http://www.sencha.com/products/touch) Sencha Touch est especficamente desarrollado para aprovechar la mayor potencia y flexibilidad de HTML5, CSS3 y JavaScript, haciendo uso de los nuevos elementos disponibles en la nueva especificacin del estndar para utilizar video, audio, guardar datos offline, as como una librera con mltiples widgets de usuario y control para los eventos tctiles de los dispositivos mviles con efectos muy agradables gracias a la capa de CSS3 que incorpora.
DojoMobile (http://dojotoolkit.org/features/mobile) Dojo Mobile, una extensin de Dojo Toolkit, proporciona una serie de widgets, o componentes, optimizados para su uso en un dispositivo mvil, como un telfono inteligente o una pizarra digital. Los componentes son modelados en sus contrapartes nativas, y tendrn una apariencia nativa para aquellos que estn familiarizados con aplicaciones de telfonos inteligentes. Los componentes son completamente personalizables utilizando temas que, por ejemplo, permiten obtener un conjunto de estilos para los usuarios de iOS y otro distinto para los usuarios de Android.
Appcelerator Titanium (http://www.appcelerator.com) Appcelerator Titanium es una plataforma para desarrollar aplicaciones mviles y de escritorio utilizando tecnologas web. Appcelerator Titanium est desarrollado por Appcelerator Inc. y fue lanzado en diciembre del 2008. En junio de 2009 se aadi soporte para el desarrollo de aplicaciones mviles para Android e iPhone.2 En abril de 2010 se aadi soporte para el desarrollo de aplicaciones para Ipad.3
Caso prctico.- Desarrollando una aplicacin Android con JQueryMobile Para comenzar crearemos un nuevo proyecto Android en Eclipse.
El cdigo es ms rpido y se ejecuta directamente en el sistema operativo del dispositivo sin la necesidad de una aplicacin de navegador intermediaria. Apuntar a distintos dispositivos requiere versiones completamente separadas de la misma aplicacin debido a las diferencias en los lenguajes de programacin y APIs en los diversos SDKs de plataformas. Pueden ser implementadas en una tienda de aplicaciones, ofreciendo un modelo de distribucin simple y costeable. Implementar aplicaciones nativas mediante una tienda de aplicaciones normalmente requiere la aprobacin de un tercero, lo que puede hacer considerablemente ms lento el tiempo para llegar al mercado. Los SDKs nativos tienen incontables dispositivos especficos para el dispositivo, normalmente completos con documentacin detallada y ejemplos. Las actualizaciones, incluso las pequeas incrementales, requieren pasar por un proceso de aprobacin, haciendo ms difcil entregar actualizaciones crticas a los usuarios.
Desventajas
Apuntar a distintos dispositivos requiere versiones completamente separadas de la misma aplicacin debido a las diferencias en los lenguajes de programacin y APIs en los diversos SDKs de plataformas. Implementar aplicaciones nativas mediante una tienda de aplicaciones normalmente requiere la aprobacin de un tercero, lo que puede hacer considerablemente ms lento el tiempo para llegar al mercado. Las actualizaciones, incluso las pequeas incrementales, requieren pasar por un proceso de aprobacin, haciendo ms difcil entregar actualizaciones crticas a los usuarios.
Escribir una aplicacin para varias plataformas. No ser requieren aplicaciones separadas para distintos dispositivos. Las aplicaciones distribuidas en la web para ser consumidas por los navegadores no tienen acceso a muchas funciones de dispositivo que las aplicaciones nativas s tienen (cmara, micrfono, etc.), aunque esto puede cambiar en el futuro. Las aplicaciones pueden ser implementadas en la web sin una tienda de aplicaciones de terceros para su distribucin. Necesita proporcionar la infraestructura para distribuir su aplicacin, lo que puede ser ms complicado y costoso que usar una tienda de aplicaciones. Usted mantiene todos los ingresos generados por sus aplicaciones (si cobra por ellas). Las aplicaciones nunca se ejecutarn tan rpido como sus contrapartes nativas, ya que son representadas en un navegador en lugar de ser ejecutadas por el sistema operativo mismo.
Desventajas
Las aplicaciones distribuidas en la web para ser consumidas por los navegadores no tienen acceso a muchas funciones de dispositivo que las aplicaciones nativas s tienen (cmara, micrfono, etc.), aunque esto puede cambiar en el futuro. Necesita proporcionar la infraestructura para distribuir su aplicacin, lo que puede ser ms complicado y costoso que usar una tienda de aplicaciones. Las aplicaciones nunca se ejecutarn tan rpido como sus contrapartes nativas, ya que son representadas en un navegador en lugar de ser ejecutadas por el sistema operativo mismo.
antoniodominguez@guadalux.org @adominguezc