Introducción al desarrollo en Android

La plataforma de aplicaciones de código abierto

Android es un entorno operativo completo basado en el kernel Linux® V2.6. Inicialmente, el objetivo de implementación para Android fue el área de teléfonos móviles, incluso teléfonos inteligentes y dispositivos de teléfonos con tapa de bajo costo. Sin embargo, el rango completo de servicio de computación de Android y el vasto soporte funcional tienen el potencial para extenderse más allá del mercado de teléfonos móviles. Android puede ser útil para otras plataformas y aplicaciones. En este artículo obtendrá una introducción a la plataforma Android y aprenderá cómo codificar una aplicación básica para Android.

Frank Ableson, Author

Después de que terminara su carrera basquetbolista colegial sin un contrato multianual para jugar para los Lakers de Los Ángeles, Frank Ableson cambió su enfoque hacia el diseño de software informático. Disfruta solucionando problemas complejos, particularmente en las áreas de comunicaciones e interfaces de hardware. Cuando no está trabajando, está pasando el tiempo con su esposa Nikki y sus hijos. Es posible contactar a Frank escribiendo a frank@cfgsolutions.com.



05-02-2013

Introducción

El BlackBerry y el iPhone, que tienen plataformas móviles atractivas y de un gran volumen, están direccionando los extremos opuestos de un espectro. El BlackBerry es sólido como una piedra para el usuario empresarial. Para un dispositivo de consumidor, resulta difícil competir con el iPhone por la facilidad de uso y el "factor genial". Android, una plataforma nueva pero que todavía no se ha probado, tiene el potencial de funcionar en ambos extremos del espectro del teléfono móvil y tal vez hasta de reducir la gran diferencia entre el trabajo y el juego.

Hoy en día, muchos dispositivos basados en la red o con capacidad para red ejecutan un tipo de kernel Linux. Es una plataforma sólida: rentable para desplegar y soportar, y aceptada inmediatamente como un buen abordaje de diseño para la implementación. La UI para dichos dispositivos está a menudo basada en HTML y se puede acceder con un navegador de PC o Mac. Pero no todos los dispositivos necesitan ser controlados por un dispositivo general de computación. Considere un dispositivo convencional, como por ejemplo una cocina, un microondas o una máquina panificadora. ¿Qué pasaría si los aparatos electrodomésticos fueran controlados por Android y tuvieran una pantalla táctil a color? Con una UI Android en la parte superior de la cocina, el autor podría incluso cocinar algo.

En este artículo, aprenda sobre la plataforma Android y cómo se puede usar para aplicaciones móviles y no móviles. Instale el Android SDK y desarrolle una aplicación simple. Descargue el código de origen para la aplicación de ejemplo en este artículo.


Una breve historia sobre Android

La plataforma de Android es el producto de la Open Handset Alliance, un grupo de organizaciones que colaboran para desarrollar un teléfono móvil mejor. El grupo, dirigido por Google, incluye operadores de móviles, fabricantes de dispositivos de auricular, fabricantes de componentes, proveedores de plataformas y soluciones de software y compañías de marketing. Desde una perspectiva de desarrollo de software, Android está perfectamente en el centro del mundo de código abierto.

El primer auricular con capacidad para Android en el mercado fue el dispositivo G1 fabricado por HTC y suministrado en T-Mobile. El dispositivo estuvo disponible después de casi un año de especulaciones, en donde las únicas herramientas de desarrollo de software disponibles eran algunos SDK releases mejorados en forma incremental. Como la fecha de lanzamiento del G1 se acercaba, el equipo de Android lanzó el SDK V1.0 y comenzaron a aparecer las aplicaciones para la nueva plataforma.

Para estimular la innovación, Google patrocinó dos series de "Desafíos para desarrolladores de Android", en donde se entregaron millones de dólares a las mejores presentaciones del concurso. Un par de meses después del G1, se lanzó el mercado de Android, que permitió a los usuarios explorar y descargar aplicaciones directamente a sus teléfonos. Después de aproximadamente 18 meses, una nueva plataforma móvil ingresó al área pública.


La plataforma de Android

Con la amplitud de las capacidades de Android, sería fácil confundirlo con un sistema operativo de computadora de escritorio. Android es un entorno en capas que usa de base el kernel Linux e incluye vastas funciones. El subsistema de la UI incluye:

  • Windows
  • Vistas
  • Widgets para mostrar los elementos comunes como los recuadros para editar, las listas y las listas desplegables

Android incluye un navegador integrable basado en WebKit, el mismo motor de navegador de código abierto que alimenta el navegador Mobile Safari de iPhone.

Android cuenta con una abundante variedad de opciones de conectividad, que incluyen Wi-Fi, Bluetooth y datos inalámbricos sobre una conexión de celular (por ejemplo, GPRS, EDGE y 3G). Una técnica popular en las aplicaciones Android es unirse a Google Maps para mostrar una dirección directamente dentro de una aplicación. El soporte para los servicios basados en la ubicación (como por ejemplo el GPS) y los acelerómetros está disponible también en la pila de software de Android. También existe un soporte para cámara.

Históricamente, las dos áreas en las que las aplicaciones móviles se han esforzado para mantenerse al día con sus homólogos de escritorio son las de gráficos/soporte físico y métodos de almacenamiento de datos. Android trata el desafío de los gráficos con soporte incorporado para gráficos en 2D y 3D, incluida la biblioteca OpenGL. La carga de almacenamiento de datos se facilita porque la plataforma Android incluye la conocida base de datos de código abierto SQLite. La Figura 1 muestra una vista simplificada de las capas del software para Android.

Figura 1. Capas del software para Android
The Android software layers

Arquitectura de la aplicación

Como mencionamos, Android se ejecuta encima del kernel Linux. Las aplicaciones Android se encuentran escritas en el lenguaje de programación Java y se ejecutan dentro de una máquina virtual (VM). Es importante tener en cuenta que la VM no es una JVM como se podría esperar, pero es la Dalvik Virtual Machine, una tecnología de código abierto. Cada aplicación Android se ejecuta dentro de una instancia de la Dalvik VM, que a su vez permanece dentro de un proceso gestionado por el kernel Linux, como se muestra a continuación.

Figura 2. Dalvik VM
Dalvik VM

Una aplicación Android que consiste en una o más de las siguientes clasificaciones:

Actividades
Una aplicación que tiene una UI visible se implementa con una actividad. Cuando un usuario selecciona una aplicación desde la pantalla de inicio o el iniciador de aplicación, se inicia una actividad.
Servicios
Se debería usar un servicio para cualquier aplicación que necesite persistir por mucho tiempo, como por ejemplo un supervisor de red o una aplicación de comprobación de actualización.
Proveedores de contenido
Es posible considerar los proveedores de contenido como un servidor de base de datos. El trabajo de un proveedor de contenido es gestionar el acceso a los datos persistentes, como por ejemplo una base de datos SQLite. Si su aplicación es muy simple, usted no debe crear necesariamente un proveedor de contenido. Si está desarrollando una aplicación más grande o una que ponga a disposición los datos para múltiples actividades o aplicaciones, un proveedor de contenido es el medio para acceder a sus datos.
Receptores de difusión
Se puede lanzar una aplicación Android para procesar un elemento de datos o para responder a un evento, como por ejemplo la recepción de un mensaje de texto.

Una aplicación Android, junto con un archivo llamado AndroidManifest.xml, se despliega para un dispositivo. AndroidManifest.xml contiene la información de configuración necesaria para instalarlo adecuadamente en el dispositivo. Incluye los nombres de clases requeridos y los tipos de eventos que la aplicación puede procesar y los permisos requeridos que la aplicación necesita para ejecutarse. A modo de ilustración, si una aplicación requiere de acceso a la red — para descargar un archivo, por ejemplo — este permiso debe estar mencionado explícitamente en el archivo manifiesto. Muchas aplicaciones pueden tener este permiso específico habilitado. Tal seguridad declarativa ayuda a reducir las probabilidades de que una aplicación maliciosa pueda causar daño en su dispositivo.

La siguiente sección discute el entorno de desarrollo necesario para desarrollar una aplicación Android.


Herramientas necesarias

La forma más fácil para comenzar a desarrollar aplicaciones Android es descargando el Android SDK y el IDE de Eclipse (vea los Recursos). El desarrollo Android puede realizarse en Microsoft® Windows®, Mac OS X o Linux.

Este artículo supone que está usando el IDE de Eclipse y el plug-in de Herramientas desarrolladoras de Android para Eclipse. Las aplicaciones Android están escritas en el lenguaje Java pero están compiladas y ejecutadas en la Dalvik VM (no Java Virtual Machine). La codificación en el lenguaje Java dentro de Eclipse es muy intuitiva; Eclipse proporciona un vasto entorno Java que incluye ayuda contextual y claves de sugerencia de códigos. Una vez que se compila su código Java de manera prolija, las Herramientas desarrolladoras de Android se aseguran de que la aplicación esté empaquetada adecuadamente, incluyendo el archivo AndroidManifest.xml.

Es posible desarrollar aplicaciones Android sin Eclipse y el plug-in de Herramientas desarrolladoras de Android pero va a necesitar conocer el entorno del Android SDK.

El Android SDK se distribuye como un archivo comprimido que se desempaqueta en un directorio en su disco duro. Debido a que ha habido varias actualizaciones SDK, se recomienda que mantenga su entorno de desarrollo bien organizado para que sea posible cambiar fácilmente entre las instalaciones SDK. El SDK incluye:

android.jar
El archivo de archivos Java que contiene todas las clases Android SDK necesarias para desarrollar su aplicación.
documention.html y docs directory
La documentación SDK se proporciona localmente y en la web. Principalmente en la forma de JavaDocs, lo que hace que sea fácil navegar en muchos paquetes en el SDK. La documentación también incluye una Guía de desarrollo de alto nivel y enlaces para la comunidad Android más amplia.
Directorio de muestras
El subdirectorio de muestras contiene un código de origen completo para una variedad de aplicaciones, incluyendo a Apidemo, que ejercita muchas API. La aplicación de muestra es un excelente lugar para explorar cuando comienza el desarrollo de aplicaciones Android.
Directorio de herramientas
Contiene todas las herramientas de líneas de comando para desarrollar las aplicaciones Android. La herramienta más comúnmente usada y útil es la utilidad adb (Puente de depuración de Android).
usb_driver
El directorio contiene los controladores necesarios para conectar el entorno de desarrollo a un dispositivo habilitado para Android, como por ejemplo el G1 o el teléfono de desarrollo Android Dev 1 desbloqueado. Estos archivos solo son necesarios para los desarrolladores que usan la plataforma Windows.

Las aplicaciones Android se pueden ejecutar en un dispositivo real o en el Emulador de Android, que envía el Android SDK. La Figura 3 muestra la pantalla inicial del Emulador de Android.

Figura 3. Emulador de Android
The Android Emulator

Puente de depuración de Android

La utilidad adb soporta varios argumentos opcionales de líneas de comando que brindan funciones eficientes, por ejemplo, copiar archivos al dispositivo y desde este. El argumento shell de líneas de comando le permite conectarse al teléfono mismo y emitir comandos shell rudimentarios. La Figura 4 muestra el comando shell adb contra un dispositivo real conectado a una computadora portátil con Windows con un cable USB.

Figura 4. Utilización del comando shell adb
Using the adb shell command

Dentro de este entorno, es posible:

  • Mostrar la configuración de la red que muestra múltiples conexiones de red. Tenga en cuenta las múltiples conexiones de red:
    • lo es la conexión local o de bucle de retorno.
    • tiwlan0 es la conexión Wi-Fi con una dirección suministrada por un servidor DHCP local.
  • Mostrar los contenidos de la variable de entorno PATH.
  • Ejecutar el comando su para convertirse en el superusuario.
  • Cambiar el directorio a /data/app, donde se almacenan las aplicaciones de usuario.
  • Realizar un listado de directorio donde usted ve una sola aplicación. Los archivos de aplicación Android son realmente archivos de archivos que se pueden ver con WinZip o un equivalente. La extensión es apk.
  • Emitir un comando de sonda de paquetes Internet para ver si Google se encuentra disponible.

Desde este mismo entorno de indicador de comandos, también es posible interactuar con bases de datos SQLite, programas de inicio y muchas otras tareas a nivel del sistema. Esta es una función bastante sorprendente, que considera que usted está conectado a un teléfono.

En la siguiente sección, usted creará una aplicación Android simple.


Codificar una aplicación básica

Esta sección brinda un recorrido tipo torbellino sobre el desarrollo de una aplicación Android. La aplicación de ejemplo es casi tan simple como es posible imaginar: una aplicación modificada "Hello Android". Añadirá una modificación menor para convertir el color de fondo de la pantalla en blanco para que sea posible usar el teléfono con una linterna. No es muy original pero será útil como ejemplo. Descargue el código de origen completo.

Para crear una aplicación en Eclipse, seleccione File > New > Android project, que inicia el asistente para el nuevo proyecto Android.

Figura 5. Asistente para nuevo proyecto Android
The new Android project wizard

A continuación, usted crea una aplicación simple con una sola actividad, junto con un diseño UI almacenado en main.xml. El diseño contiene un elemento de texto que modificará para que diga Android FlashLight. El diseño simple se muestra a continuación.

Listado 1. Diseño de Flashlight
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/all_white">
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" android:textColor="@color/all_black" 
   android:gravity="center_horizontal"/>
</LinearLayout>

Crear un par de recursos a color en strings.xml.

Listado 2. Color en strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Android FlashLight</string>
    <string name="app_name">FlashLight</string>
    <color name="all_white">#FFFFFF</color>
    <color name="all_black">#000000</color>
</resources>

El diseño de la página principal tiene un color de fondo definido como all_white. En el archivo strings.xml, usted ve que all_white está definido como un valor triple RGB de #FFFFFF o todo blanco.

El diseño contiene una sola TextView, que es en realidad sólo un texto estático; que no se puede editar. El texto está configurado en negro y centrado horizontalmente con el atributo gravity.

La aplicación tiene un archivo de origen Java llamado FlashLight.java, como se muestra a continuación.

Listado 3. Flashlight.java
package com.msi.flashlight;
import android.app.Activity;
import android.os.Bundle;
public class FlashLight extends Activity {
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

El código es un texto estándar directamente desde el asistente de nuevo proyecto:

  • Forma parte de un paquete Java llamado com.msi.flashlight.
  • Tiene dos importaciones:
    • Una para la clase actividad
    • Una para la clase paquete
  • Cuando se inicia esta actividad, se invoca el método onCreate, se pasa como un savedInstanceState. No se preocupe por este paquete para cuatro propósitos, se usa cuando una actividad se suspende y luego se reanuda.
  • El método onCreate es una alteración temporal del método de clase de actividad del mismo nombre. Llama al método onCreate de superclase.
  • Una llamada a setContentView() asocia el diseño UI definido en el archivo main.xml. Cualquier cosa en main.xml y strings.xml se correlaciona automáticamente en constantes definidas en el archivo de origen R.java. Nunca edite este archivo directamente ya que se cambia sobre cada desarrollo.

Al ejecutar la aplicación se presenta una pantalla blanca con texto negro.

Figura 6. Pantalla blanca de linterna
White screen of flashlight

El archivo AndroidManifest.xml configurado para la aplicación FlashLight se muestra a continuación.

Listado 4. AndroidManifest.xml para FlashLight
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.msi.flashlight"
      android:versionCode="1"
      android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FlashLight"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Este archivo fue creado automáticamente por el plug-in de Herramientas desarrolladoras de Android para Eclipse. No tuvo que hacer nada.

Por supuesto, la aplicación no es absolutamente magnífica. Pero podría llegar a ser práctica si desea leer un poco sin perturbar a su esposa mientras duerme o si es necesario encontrar la caja de fusibles en el sótano durante un corte de electricidad.


Resumen

En este artículo, usted aprendió sobre Android a un muy alto nivel y construyó una pequeña aplicación. Con suerte, el ejemplo lo entusiasmó lo suficiente como para explorar más sobre la plataforma Android. Android promete ser una plataforma de código abierto movilizadora de mercado que será útil mucho más allá de los teléfonos celulares.


Descargar

DescripciónNombretamaño
FlashLight source codeos-android-devel-FlashLight.zip22KB

Recursos

Aprender

  • Open Handset Alliance es un grupo de 47 compañías de tecnología y móviles, que se unió para acelerar la innovación en móviles y ofrecer a los consumidores una experiencia con móviles mejor, más rica y menos costosa. Juntos, han desarrollado a Android, la primera plataforma móvil completa, abierta y gratuita.
  • El sitio de desarrolladores de Android ofrece documentación, descargas, blogs y más.
  • Aprenda más acerca de la Dalvik Virtual Machine.
  • Revise los tutoriales que se encuentran en YouTube y que discuten las internas de la Dalvik VM.
  • Unlocking Android: A Developer's Guide brinda instrucciones concisas y prácticas para la herramientas desarrolladoras y el sistema operativo Android.
  • Para escuchar entrevistas interesantes y discusiones para los desarrolladores de software, pruebe developerWorks podcasts.
  • Manténgase actualizado con Technical events and webcasts de developerWorks.
  • Siga a developerWorks en Twitter.
  • Consulte las próximas conferencias, los shows comerciales, los webcasts y otros Eventos de todo el mundo que son de interés para los desarrolladores de código abierto de IBM.
  • Visite la Open source zone de developerWorks para obtener información exhaustiva sobre instrucciones, herramientas y de proyectos para ayudarlo a desarrollarse con las tecnologías de códigos abiertos y a utilizarlos con los productos de IBM.
  • Vea y aprenda acerca de funciones de productos y tecnologías IBM y de código abierto con el developerWorks On demand demos gratuitos.

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Desarrollo móvil, Industries
ArticleID=857147
ArticleTitle=Introducción al desarrollo en Android
publish-date=02052013