os eclipse android pdf

29
© Copyright IBM Corporation 2013 Marcas Desarrolle aplicaciones Android con Eclipse Pagina 1 de 29 Desarrolle aplicaciones Android con Eclipse Comience con el plug-in para Eclipse de Google, Android Development Tools Frank Ableson Author 18-02-2013 El sistema Android es la plataforma de comunicaciones para cómputo inalámbrico y móvil de Google discutida con mayor frecuencia. Usted puede aprovechar el poderoso entorno Eclipse para desarrollar aplicaciones con el plug-in de Android. Este tutorial introduce el desarrollo de aplicaciones Android con el complemento para Eclipse también conocido como Android Development Tools (ADT). El tutorial proporciona una introducción al desarrollo Android con una rápida introducción a la plataforma, un recorrido por ADT e incluye la construcción de dos aplicaciones de ejemplo. Antes de comenzar Este tutorial presenta el desarrollo de aplicaciones Android dentro del entorno Eclipse, incluyendo la construcción de dos aplicaciones de ejemplo. La primera es una aplicación básica de inicio, que se completa con todas las fases de construcción y depuración. La segunda aplicación examina las funciones más complejas de Android, incluyendo la búsqueda de direcciones de Google Maps y la búsqueda de contactos. Para aprovechar al máximo este tutorial, la experiencia de desarrollo móvil es útil pero no obligatoria. Las habilidades de programación Java™ son necesarias para las aplicaciones Android, pero no son un requisito explícito para este tutorial. Acerca de este tutorial ¿Por qué nos interesa Android? Android es una plataforma importante por dos razones. Primero, el hecho de que Google lo esté introduciendo y la notoriedad que Android ha obtenido en un periodo de tiempo tan corto. Google está mostrando su poderío e intentando ganar el abarrotado mercado móvil. Su primera salva en este mercado, Android y la Open Handset Alliance es un impresionante punto de partida. La segunda razón por la que Android es importante es porque no es solo otra plataforma móvil con un menú telefónico y una pantalla táctil. Como aprenderá en este tutorial, Android toma un abordaje distinto para las aplicaciones. La arquitectura de Android permite un entorno de software altamente personalizable gracias a su enlace de ejecución de las acciones solicitadas y el código para satisfacer estas solicitudes. Ya sea por las consideraciones dirigidas por el mercado o los aspectos técnicos de Android, es una plataforma digna de examinar.

Upload: gustavocaceres

Post on 27-Dec-2015

30 views

Category:

Documents


0 download

TRANSCRIPT

© Copyright IBM Corporation 2013 MarcasDesarrolle aplicaciones Android con Eclipse Pagina 1 de 29

Desarrolle aplicaciones Android con EclipseComience con el plug-in para Eclipse de Google, AndroidDevelopment Tools

Frank AblesonAuthor

18-02-2013

El sistema Android es la plataforma de comunicaciones para cómputo inalámbrico y móvil deGoogle discutida con mayor frecuencia. Usted puede aprovechar el poderoso entorno Eclipsepara desarrollar aplicaciones con el plug-in de Android. Este tutorial introduce el desarrollode aplicaciones Android con el complemento para Eclipse también conocido como AndroidDevelopment Tools (ADT). El tutorial proporciona una introducción al desarrollo Android conuna rápida introducción a la plataforma, un recorrido por ADT e incluye la construcción de dosaplicaciones de ejemplo.

Antes de comenzarEste tutorial presenta el desarrollo de aplicaciones Android dentro del entorno Eclipse, incluyendola construcción de dos aplicaciones de ejemplo. La primera es una aplicación básica de inicio, quese completa con todas las fases de construcción y depuración. La segunda aplicación examina lasfunciones más complejas de Android, incluyendo la búsqueda de direcciones de Google Maps yla búsqueda de contactos. Para aprovechar al máximo este tutorial, la experiencia de desarrollomóvil es útil pero no obligatoria. Las habilidades de programación Java™ son necesarias para lasaplicaciones Android, pero no son un requisito explícito para este tutorial.

Acerca de este tutorial¿Por qué nos interesa Android? Android es una plataforma importante por dos razones. Primero,el hecho de que Google lo esté introduciendo y la notoriedad que Android ha obtenido en unperiodo de tiempo tan corto. Google está mostrando su poderío e intentando ganar el abarrotadomercado móvil. Su primera salva en este mercado, Android y la Open Handset Alliance es unimpresionante punto de partida. La segunda razón por la que Android es importante es porqueno es solo otra plataforma móvil con un menú telefónico y una pantalla táctil. Como aprenderá eneste tutorial, Android toma un abordaje distinto para las aplicaciones. La arquitectura de Androidpermite un entorno de software altamente personalizable gracias a su enlace de ejecución de lasacciones solicitadas y el código para satisfacer estas solicitudes. Ya sea por las consideracionesdirigidas por el mercado o los aspectos técnicos de Android, es una plataforma digna de examinar.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 2 de 29

Este tutorial está organizado en las siguientes secciones:

• Herramientas requeridas y lo básico de Android• El kit de desarrollador de software Android• Construir y depurar la aplicación SaySomething Android• Crear la aplicación Google Maps y proveedor de contenido

Requisitos de sistemaEste tutorial requiere de varias tecnologías que trabajen juntas Necesita a todas ellas para estetutorial.

Plataforma de EclipseEclipse es la plataforma sobre el que se ejecuta el plug-in. Obtenga la última versión deEclipse Classic (en este tutorial se utilizó V3.3.1).

Herramientas desarrolladoras de AndroidLas herramientas desarrolladoras de Android (el plug-in de Eclipse) se podrían instalarsiguiendo las instrucciones que se encuentran en Instalar el Android SDK.

Código fuenteLos fragmentos de código fuente en este tutorial incluyen:

• Fragmento AndroidManifest.xml — Este archivo es el descriptor del despliegue deaplicaciones para aplicaciones Android.

• IntentReceiver—Esto demuestra la implementación de un IntentReceiver, que es laclase que procesa las intenciones según se promociona por la etiqueta IntentFilter enel archivo AndroidManifest.xml.

• SaySomething.java — Esto implementa una actividad Android, el punto de entradaprincipal para la misma aplicación de este tutorial.

• Main.xml — Esto contiene los elementos visuales o recursos para el uso de lasactividades Android.

• R.java — Este archivo se genera automáticamente por las Herramientas desarrolladorasde Android y "conecta" los recursos visuales para el código fuente Java.

• AndroidManifest.xml complete — Esto enumera un archivo AndroidManfest.xmlcompleto, junto con una descripción de cada uno de los elementos importantes.

• MobileServiceCallContacts.java — Esto contiene el código necesario para mostrar loscontactos así como reaccionar a la entrada de usuario para llevar a cabo después unabúsqueda de direcciones de Google Maps.

Introducción a AndroidAntes de ahondar en los detalles prácticos del plug-in Eclipse y desarrollar las aplicacionesAndroid, analicemos la arquitectura de Android y algunos términos claves que serán útiles en eltutorial y más allá, a medida que comienza a construir aplicaciones Android por usted mismo.

Terminología AndroidEl desarrollo de aplicaciones Android bajo el entorno Eclipse requiere de un conocimiento delentorno Eclipse y de la plataforma Android. La comprensión de los términos a continuación es útilen el desarrollo de las aplicaciones Android con el plug-in Eclipse.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 3 de 29

Open Handset AllianceEsta es la organización dirigida por Google Inc., que consiste en numerosas organizacionespúblicas y privadas.

AndroidEl producto principal de la Open Handset Alliance. Este es un entorno operativo de códigoabierto dirigido a los dispositivos móviles.

EmuladorUn representante de herramientas de software de otro sistema — Este es a menudo unentorno que se ejecuta en una computadora personal (IBM®, Mac, Linux)® que emula otroentorno, como por ejemplo un dispositivo de computación móvil.

LinuxUn kernel de sistema operativo de código abierto en el corazón de varias plataformasde informática, incluyendo servidores, computadoras de escritorio, dispositivos de red ydispositivos de computación móvil. Android se ejecuta por encima de un kernel de Linux.

Dalvik Virtual MachineLa Dalvik VM es un entorno operativo que se encuentra en la pila de Android, que interpretael código de aplicación en el tiempo de ejecución. La Dalvik VM es similar a una Java VMcompatible, pero las dos no son compatibles.

Herramientas requeridas y lo básico de AndroidEste es un entorno operativo de código abierto dirigido a los dispositivos móviles. Al momentode este escrito, es una plataforma solo de software sin dispositivos de hardware disponiblespúblicamente.

La plataforma de Android aparece mejor descrita como una pila porque es una colección decomponentes, que incluye:

• Sistema operativo basado en kernel de Linux• Entorno de programación Java• Cadena de herramientas, que incluyen el compilador, compilador de recursos, depurador y

emulador• Dalvik VM para aplicaciones que se ejecutan

Ahora que hemos introducido brevemente la arquitectura de la plataforma de Android, analicemosalgunas características importantes de la plataforma desde una perspectiva del mercado.

¿Por qué es importante Android?La prensa de tecnología de computadoras ha desviado la atención a Android desde su anuncioy comunicado inicial de SDK. Android resulta importante como una plataforma por dos razonesdistintas pero convincentes entre muchas otras.

Android es un generador de mercado. El espacio de las aplicaciones móviles está abarrotado yresulta difícil para un principiante obtener un equilibrio. Google tiene los recursos y la notoriedadpara causar impresión en cualquier mercado al que apunte. El ingreso de Google en elespacio móvil ha estado en proceso por un par de años. Android era una compañía distinta eindependiente que Google compró para brindarle un impulso en una presencia móvil. Cualquier

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 4 de 29

cosa que realice Google llama la atención y la publicidad es buena para introducir nuevasplataformas. Anote un punto para Android.

La segunda razón por la que resulta importante Android es debido a su modelo de aplicación.Las aplicaciones Android no son monolíticas ni están llenas de menú que requieren de que hagamuchos clics y presiones para que operen. Sin dudas, hay menús y botones para presionar peroAndroid tiene un elemento de diseño innovador para su arquitectura conocido con una intención.

La intenciónUna intención es una construcción que permite a una aplicación emitir un pedido, que es en ciertomodo como una señal para pedir ayuda. Podría verse así:

"Buscada: Una aplicación para ayudarme a buscar un contacto" o "Buscada: Una aplicación paraayudarme a mostrar un contacto" o "Buscada: Una aplicación para realizar esta búsqueda basadaen lo geográfico".

De manera similar y complementaria, las aplicaciones se pueden registrar por sí mismas comocapaces e interesadas en desarrollar varias intenciones o solicitudes satisfactorias. Para seguir elparadigma clasificado de publicidad, estas podrían verse así:

"Disponible: Aplicación lista y dispuesta a presentar los registros de contactos de manera claray concisa", o "Disponible: Aplicación lista y dispuesta a realizar una búsqueda basada en logeográfico".

Estos son ejemplos de IntentFilters, que discutiremos más adelante.

El IntentFilterLas aplicaciones anuncian su disponibilidad para realizar este tipo de operaciones a través deuna construcción conocida como un IntentFilter. El IntentFilter puede estar registrado enel tiempo de ejecución o enumerado en el archivo AndroidManifest.xml. El siguiente fragmentoproviene de una aplicación Android que responde a mensajes de texto SMS entrantes:

Listado 1 Aplicación Android que responde a mensajes de texto SMSentrantes <receiver class=".MySMSMailBox" > <intent-filter> <action android:value="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>

Después de esta breve introducción a la intención y el IntentFilter, la siguiente secciónintroduce los cuatro tipos principales de aplicaciones Android.

Aplicaciones Android — Una rápida encuestaAnalicemos por un momento los cuatro tipos principales de aplicaciones Android: actividad,servicios, receptores y ContentProvider. También analizaremos las vistas para mostrar loselementos de la interfaz de usuario (UI).

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 5 de 29

ActividadLa actividad es la forma más visible y prominente de una aplicación Android. Una actividadpresenta la UI a una aplicación, junto con la asistencia de una clase conocida como una vista. Laclase vista se implementa como varios elementos UI, tales como recuadros de texto, etiquetas,botones y otras UI típicas en las plataformas de informática, móviles o diferentes.

Una aplicación puede contener una o más actividades. Por lo general están en una relación uno auno con las pantallas encontradas en una aplicación.

Una aplicación se mueve de una actividad a otra al llamar un método conocido comostartActivity() o startSubActivity(). El método anterior se usa cuando la aplicación deseasimplemente "cambiar" a una nueva actividad. La última se utiliza cuando se desea un paradigmade respuesta/llamada simultánea. En ambos casos, se pasa una intención como un argumento almétodo.

Es responsabilidad del sistema operativo determinar la actividad mejor calificada para satisfacer laintención especificada.

Servicios y receptoresComo otros entornos de computación de procesos de tareas, existen aplicaciones ejecutándose"en el fondo" que realizan varias tareas. Android llama a estos tipos de aplicaciones "servicios". Elservicio es una aplicación Android que no tiene UI.

El receptor es un componente de la aplicación que recibe solicitudes para procesar lasintenciones. Como el servicio, un receptor en la práctica normal no tiene un elemento UI. Losreceptores están típicamente registrados en el archivo AndroidManifest.xml. El fragmento quese muestra en el Listado 1 es un ejemplo de una aplicación de receptor. Tenga en cuenta que elatributo clase del receptor es la clase Java responsable por la implementación del receptor. Ellistado 2 es un ejemplo del código del receptor.

Listado 2. Código del receptorpackage com.msi.samplereceiver;

import android.content.Context;import android.content.Intent;import android.content.IntentReceiver;

public class myreceiver extends IntentReceiver{ public void onReceiveIntent(Context arg0, Intent arg1) { // do something when this method is invoked. }}

Gestión de datos con ContentProviderEl ContentProvider es el mecanismo Android para la abstracción del almacenamiento de datos.Veamos un tipo específico de datos que se encuentra en un dispositivo móvil: la libreta de

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 6 de 29

direcciones o la base de datos de los contactos. La libreta de direcciones contiene todos loscontactos y números de teléfonos que una persona podría necesitar al usar un teléfono móvil.El ContentProvider es un mecanismo para abstraer el acceso a un almacenamiento de datosdeterminado. De diferentes maneras, el ContentProvider funciona en el rol de un servidor debase de datos. Las operaciones para leer y escribir el contenido en un almacenamiento dedatos determinado debería pasar a través del ContentProvider apropiado, en lugar de accederdirectamente a un archivo o base de datos. Puede haber tanto "clientes" e "implementaciones" delContentProvider.

La siguiente sección introduce las vistas Android, el mecanismo UI para colocar cosas en lapantalla de un dispositivo Android.

Vistas

La actividad Android emplea las vistas para mostrar los elementos UI. Las vistas siguen uno delos siguientes diseños:

LinearVerticalCada elemento subsiguiente sigue su predecesor al fluir debajo de este en una únicacolumna.

LinearHorizontalCada elemento subsiguiente sigue su predecesor al fluir hacia la derecha en una única fila.

RelativeCada elemento subsiguiente se describe en términos de desplazamientos desde el elementoanterior.

TableUna serie de filas y columnas similar a las tablas de HTML. Cada celda puede contener unelemento de vista.

Una vez que se ha seleccionado un diseño particular (o una combinación de diseños), las vistasindividuales se usan para presentar la UI.

Los elementos de vista consisten en elementos UI familiarizados, que incluyen:

• Button• ImageButton• EditText• TextView (similar a una etiqueta)• CheckBox• Botón de radio• Galería e ImageSwitcher para mostrar múltiples imágenes• Lista• Grilla• DatePicker• TimePicker• Spinner (similar a un cuadro combinado)• AutoComplete (EditText con la función auto completar el texto)

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 7 de 29

Las vistas se definen en un archivo XML. El Listada 3 muestra un ejemplo de un diseño simpleLinearVertical.

Listado 3 Diseño simple LinearVertical<?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" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Activity 1!" /><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Activity 1, second text view!" /><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Switch To Activity 2" id="@+id/switchto2" /></LinearLayout>

Tenga en cuenta que cada elemento tiene uno o más atributos en el espacio de nombre deAndroid.

La siguiente sección guía al obtener el Android SDK y configurarlo para usar con Eclipse.

Kit de desarrollador de software AndroidAhora que sabemos sobre la plataforma Android, configuremos el entorno Eclipse para eldesarrollo Android para que podamos crear nuestras aplicaciones de ejemplo. Esta sección guíaal obtener el Android SDK y configurarlo para usar con Eclipse.

Obtener e instalar EclipseSi Eclipse no está instalado, descárguelo e instale el release estable más reciente de EclipseIDE desde la Eclipse Foundation (vea los Recursos). La instalación se encuentra en una carpetacomprimida. Extraiga el contenido de la carpeta a un lugar conveniente en su computadora. Elinstalador no crea ningún ícono o atajo en Windows®. A los fines de este tutorial, la carpetaEclipse se localizará en el directorio c:\software\eclipse.

Para iniciar Eclipse, haga doble clic en eclipse.exe que se encuentra en el directorio de instalaciónde Eclipse. Esto iniciará el IDE. El software solicita un "espacio de trabajo" y sugiere unaubicación predeterminada, por ejemplo, c:\documents y settings\username\workspace. Elija estaubicación o especifique una ubicación alternativa de espacio de trabajo.

Una vez que se carga Eclipse, haga clic en el ícono Workbench - Go to the workbench en lapantalla principal.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 8 de 29

Ahora es momento de obtener el Android SDK.

Obtener e instalar el Android SDKEncuentre las descargas Android en los Recursos.

Existen versiones de instalación SDK disponibles para Windows, Mac OS X (solo Intel®) y Linux(i386). Seleccione la versión más reciente del SDK para la plataforma deseada. Tenga en cuentaque al momento de este escrito, la versión Android SDK más reciente se encuentra marcada conm3-rc37a.

El Android SDK se encuentra en una carpeta comprimida. Descargue y extraiga el contenidode esta carpeta a un lugar conveniente en su computadora. A los fines de este tutorial, el SDKestá instalado en c:\software\google\android_m3-rc37a. Obviamente, si está instalando esto enMac OS X y Linux, debería instalar el SDK en donde coloca generalmente sus herramientas dedesarrollo.

Se instalan tanto Eclipse como el Android SDK. Es momento de instalar el plug-in Eclipse paraaprovechar el entorno Eclipse.

Obtener e instalar el plug-in para EclipseLos siguientes pasos demuestran la instalación del plug-in para Eclipse, conocido oficialmentecomo Herramientas desarrolladoras de Android. Tenga en cuenta que las direcciones alternativasde instalación se encuentran disponibles en el sitio web de Android. Consulte los Recursos paramás información.

Instalar las Herramientas desarrolladoras de Android:

1. Ejecute la función "Find and Install" en Eclipse, que se encuentra debajo del menú Help >Software Updates .

2. Seleccione la opción Search for new features to install .3. Seleccione New Remote Site. Dele un nombre a este sitio, como por ejemplo "Android

Developer Tools". Use la siguiente URL en el diálogo: https://dl-ssl.google.com/android/eclipse. Observe el HTTPS en la URL. Esta es una descarga segura.

Figura 1. Nuevo sitio de actualización

4. Se agrega una nueva entrada a la lista y se selecciona de manera predeterminada. Hagaclic en Finish. Los resultados de búsqueda muestran las Herramientas desarrolladoras deAndroid. Seleccione Developer Tools y haga clic en Next.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 9 de 29

5. Después de revisar y aceptar el acuerdo de licencia, haga clic en Next. Tenga en cuenta queel acuerdo de licencia incluye un requisito especial para usar la Google Maps API.

6. Revise y acepte la ubicación de instalación, luego haga clic en Finish.

Se descarga e instala ahora el plug-in. El plug-in no se firma (al momento del escrito), por lo tantocontinúe en su propio nivel de comodidad al hacer clic en Install All, luego reinicie Eclipse.

Configurar el plug-in para Eclipse

Una vez que se reinicia Eclipse, es momento de conectar el plug-in para la instalación del SDK.Seleccione Preferences bajo del menú Window. Haga clic en el elemento Android en las tresvistas hacia la izquierda. En el panel derecho, especifique la ubicación de instalación SDK. Elvalor usado para este tutorial es c:\software\google\android\m3-rc37a (nuevamente, use lasubicaciones apropiadas en las instalaciones Mac OS X y Linux).

Una vez que se especifica la ubicación, existen otras tres secciones que se pueden configurar.Aquí se mencionan brevemente:

• La sección Build tiene opciones para recursos de reconstrucción automática. Deje estoseleccionado. La opción Build puede cambiar el nivel de verbosidad. Normal es el valorpredeterminado.

• DDMS — El servicio de control de depuración Dalvik se usa para observar una VM que seestá ejecutando. Estas configuraciones especifican la cantidad de puertos TCP/IP que seusan para conectarse con una VM que se está ejecutando con el depurador y varios nivelesde registros y opciones. La configuración predeterminada debería estar bien.

• LogCat — Este es un archivo de registro que se crea en el kernel fundamental de Linux. Lafuente es seleccionable en este diálogo. Ajústelo según como desee.

¡Felicitaciones! El entorno Eclipse está listo para crear aplicaciones para Android.

Construyendo la aplicación SaySomething para Android

Esta sección crea una aplicación básica para Android, llamada SaySomething, usando lasHerramientas desarrolladoras de Android. Una vez que se crea la aplicación, la depuraremos yejecutaremos.

Asistente para nuevo proyecto

El primer paso consiste en crear un nuevo proyecto. Seleccione el asistente para el proyectoAndroid, como se muestra a continuación.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 10 de 29

Figura 2. Asistente para nuevo proyecto

Los requisitos para las aplicaciones son:

• Nombre• Ubicación• Nombre del paquete• Nombre de la actividad — Piense en esto como el "formulario" principal o la pantalla de la

aplicación• Nombre de la aplicación

Observe el nuevo proyecto.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 11 de 29

Figura 3. Nuevo proyecto Android

Esto creará una aplicación predeterminada lista para construir y ejecutar. Los componentes sepueden ver en el Explorador del paquete, que discutimos a continuación.

El explorador del paquete

El Explorador del paquete (que se encuentra en la perspectiva de Java en Eclipse) muestra todoslos componentes de la misma aplicación Android (vea la Figura 4).

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 12 de 29

Figura 4 El explorador del paquete

Los elementos de la nota incluyen:

Carpeta srcIncluye el paquete para la aplicación de muestra, es decir com.msi.ibmtutorial.

R.javaLas Herramientas desarrolladoras de Android crean este archivo automáticamente yrepresentan las constantes necesarias para acceder a varios recursos de la aplicaciónAndroid. Más sobre la relación entre la clase R y los recursos que se encuentran acontinuación.

SaySomething.javaImplementación de la clase de actividad principal de la aplicación.

Bibliotecas de referenciaContiene a android.jar, que es el archivo clase jar de tiempo de ejecución de Android, en elAndroid SDK.

Carpeta resContiene los recursos para la aplicación, incluyendo:

• Íconos• Archivos de diseño• Cadenas

AndriodManifest.xmlDescriptor del despliegue de la aplicación de muestra.

A continuación, examinaremos el código fuente en más detalle.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 13 de 29

La actividad principal de la aplicaciónLa aplicación de muestra consiste en una sola actividad, concretamente SaySomething. Como sedescribe más arriba, la clase SaySomething se implementa en el archivo SaySomething.java.

Listado 4. SaySomething.javapackage com.msi.ibmtutorial;

import android.app.Activity;import android.os.Bundle;

public class SaySomething extends Activity{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); }}

Cosas para tener en cuenta sobre este fragmento fuente:

• SaySomething es una clase Java normal, con un paquete e importaciones, como se espera.• SaySomething extiende una clase Android de base llamada Actividad, que se encuentra

ubicada en el paquete android.app.• El método onCreate() es el punto de entrada para esta actividad, al recibir un tipo de

argumento Bundle. El Bundle es una clase que es esencialmente un derivador entorno a unmapa o un mapa hash. Los elementos requeridos para la construcción se pasan en esteparámetro. Este tutorial no examina este parámetro.

• El setContentView(..) es responsable de crear la UI primaria con el argumentoR.layout.main. Esto es un identificador que representa el diseño principal que se encuentraen los recursos de la aplicación.

La siguiente sección revisa los recursos para la aplicación de muestra.

Recursos para la aplicaciónLos recursos en Android se organizan en un subdirectorio del proyecto llamado res, según sedescribió previamente. Los recursos entran en estas tres categorías primarias:

DibujablesEsta carpeta contiene archivos de gráficos, por ejemplo, íconos y mapas de bits.

DiseñosEsta carpeta contiene archivos XML que representan los diseños y las vistas de la aplicación.Estos se examinarán en detalle a continuación.

ValoresEsta carpeta contiene un archivo llamado strings.xml. Esta es el medio primario para lalocalización en cadena para la aplicación.

La siguiente sección disecciona el archivo main.xml para revisar los recursos de la UI primaria dela aplicación de muestra.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 14 de 29

main.xmlLa aplicación de muestra contiene una sola actividad y una sola vista. La aplicación contiene unarchivo llamado main.xml que representa los aspectos visuales de la UI primaria de la actividad.Tenga en cuenta que no existe referencia en el main.xml donde se usa el diseño. Esto significaque se puede usar en más de una actividad, si se desea. El Listado 5 tiene el contenido delarchivo de diseño.

Listado 5 Archivo de diseño<?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" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, SaySomething" /></LinearLayout>

Este es uno de los diseños más simplistas. Existe un solo diseño lineal, que se orienta como undiseño vertical, lo que significa que todos los elementos que contiene están en una sola columna.Existe un solo elemento TextView, que se puede comparar con una etiqueta en otros entornos dedesarrollo. Una TextView representa un texto estático que no se puede editar.

Tenga en cuenta que cada elemento (layout y TextView en este ejemplo) tiene atributos enel espacio de nombre de Android. Algunos atributos son comunes para todas las vistas — losatributos android:layout_width y android:layout_heigh, por ejemplo. Los valores disponiblespara estos atributos son:

Padre de rellenoEsto extiende el elemento de vista para tomar el máximo espacio disponible. Esto se puedepensar también como "ampliar".

Contenido del envoltorioEste valor le avisa a Android que pinte los elementos uno después del otro sin ampliar.

Durante el proceso de desarrollo, se compilan todos los recursos. Uno de los productos de eseproceso es el archivo R.java, que representa los recursos para el recordatorio de la aplicación. Elarchivo R.java se discute a continuación.

R.javaEl archivo R.java se crea en construir automáticamente, por lo tanto asegúrese de no modificarloa mano porque se perderán todos los cambios. El listado 6 contiene el archivo R.java file para laaplicación de muestra.

Listado 6. Archivo R.java/* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 15 de 29

* aapt tool from the resource data it found. It * should not be modified by hand. */

package com.msi.ibmtutorial;

public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040000; }}

La clase R contiene subclases anónimas, y cada una contiene identificadores para los diferentesrecursos previamente descritos. Tenga en cuenta que todas estas clases son estáticas.

Tenga en cuenta el elemento representado por: R.layout.main. Este identificador representael diseño definido por main.xml. Recuerde que este valor se usa en el método onCreate de laactividad de la siguiente manera: setContentView(R.layout.main);. Este el punto en el queuna actividad específica (en este caso, SayAnything) y un diseño específico (principal) estánvinculados en el tiempo de ejecución.

Aplicaciones de construcciónLos archivos se compilan cada vez que se guardan por defecto.

Figura 5. Panel de error

Introducimos un error en el código fuente a donde agregamos un espacio adicional entresetContent y View. Cuando se guarda el archivo, se compila y aparece cualquier error en el panelProblemas en la parte inferior de la pantalla. Luego de corregir el error en el código fuente, laaplicación construye adecuadamente y los errores se eliminan de la lista de problemas.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 16 de 29

AndroidManifest.xmlEl archivo AndroidManifest.xml representa al descriptor del despliegue para una aplicaciónAndroid. El archivo enumera cualquier actividad, servicio, proveedor de contenido o receptorcontenido en la aplicación, junto con los IntentFilters apropiados soportados por la aplicación.Aquí se encuentra el archivo completo AndroidManifest.xml para la aplicación de muestra.

Listado 5. Archivo AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.msi.ibmtutorial"> <application android:icon="@drawable/icon"> <activity class=".SaySomething" android:label="@string/app_name"> <intent-filter> <action android:value="android.intent.action.MAIN" /> <category android:value="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>

Cosas para tener en cuenta:

• El nombre del paquete del archivo fuente se representa aquí. Esto sigue un patrón similara un archivo fuente Java y a las importaciones. La etiqueta <manifest> es en esencia delas clases "importación" de este paquete. Todas las clases que no están completamentecalificadas en este archivo se encuentran en el paquete identificado en el atributo delpaquete.

• La etiqueta <application> tiene un atributo que hace referencia a un recurso de los recursosde la aplicación Tenga en cuenta el símbolo @ que precede al identificador dibujable. Esta esuna pista para que el archivo mire en la carpeta dibujable de los recursos de la aplicación unrecurso llamado "icon".

• La etiqueta <activity> contiene los siguientes atributos y valores de la nota:• la clase representa la clase Java que implementa esta actividad• android:label es el nombre de la aplicación. Tenga en cuenta que proviene de uno

de los recursos en cadena. El archivo string.xml contiene cadenas localizadas para laaplicación.

• <intent-filter> representa el IntentFilter disponible en la aplicación de muestra.Este es el IntentFilter más común que se puede ver en las aplicaciones Android. Estefiltro esencialmente dice que implementa la acción "principal" (o punto de entrada) y quese encuentra ubicado en el iniciador del OS. En español, esto significa que se puedeiniciar como una aplicación desde la lista principal de las aplicaciones en un dispositivoAndroid.

La siguiente sección describe cómo iniciar la aplicación en el Emulador de Android desde elinterior de Eclipse.

Ejecutar la aplicaciónAhora que la aplicación se ha compilado de manera correcta, es momento de ejecutar la mismaaplicación. Seleccione Open Run Dialog o atajo en la barra de herramientas dentro de Eclipse.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 17 de 29

Esto abre un diálogo donde se crean las configuraciones de arranque. Resalte la opción de laAplicación Android y haga clic en el ícono para New.

La Figura 6 muestra los valores que se usan para el tutorial de muestra.

Figura 6. Diálogo de ejecución

Dele un nombre a la configuración La muestra del tutorial usa el nombre Tutorial Configuration.Seleccione el proyecto ibmtutorial de la lista de los proyectos disponibles (haga clic en Browsepara ver los proyectos disponibles). Seleccione la actividad de arranque en el menú desplegable.Ahora seleccione la pestaña Emulator para especificar las configuraciones del Emulador, comodesee. El valor predeterminado se puede dejar solo. Existe un par de elementos para tener encuenta, según se describe en la Figura 7.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 18 de 29

Figura 7 Diálogo de ejecución, pestaña Emulator

Existen algunas orientaciones y tamaños de pantallas de las que se puede elegir, como asítambién opciones de red. Las opciones de red son importantes cuando las aplicaciones deconstrucción que emplean la conectividad de Internet como los dispositivos móviles tienendiferentes capacidades de velocidad de red. Elija velocidades de red completas y sin latenciacuando diseñe un prototipo de una aplicación. Una vez que se presenta la funcionalidad principal,es buena idea probar con condiciones de red menos ideales para ver cómo responde la aplicaciónen situaciones con conectividad de red subóptimas.

Seleccione Run para ver la aplicación de muestra en acción.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 19 de 29

Figura 8. Emulator

Ahora que la aplicación se está ejecutando en el Emulator, es momento de ver qué estásucediendo detrás de escena. El servicio de control de depuración Dalvik (DDMS) lo asistirá conesto.

Depuración de la aplicación

Para ver qué está sucediendo con una aplicación que se está ejecutando, es útil acceder a laDalvik en ejecución. Para habilitar esto desde Eclipse, seleccione Window > Open Perspective >Other. Esto muestra un recuadro de diálogo donde se puede seleccionar el DDMS. Esto abre unanueva perspectiva en Eclipse con un número de ventanas interesantes. Aquí tenemos una rápidaintroducción a los recursos disponibles en la perspectiva DDMS:

El LogCat es un archivo de registro en ejecución de la actividad que tiene lugar en la VM. Lasaplicaciones pueden realizar sus propias entradas a esta lista con una simple línea de códigos dela siguiente manera: Log.i(tag,message);, en donde tag y message son cadenas Java. La claseLog es parte del paquete android.util.Log.

La Figura 9 muestra el LogCat en funcionamiento.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 20 de 29

Figura 9. LogCat in action

Otra herramienta práctica en la DDMS es el explorador de archivo, que permite acceso al sistemade archivo del Emulator. La Figura 10 muestra donde se implementa la aplicación de muestra deltutorial en el Emulator.

Figura 10. Aplicación de muestra implementada en el Emulator

Las aplicaciones de usuario se despliegan en /data/app mientras que las aplicacionesincorporadas Android se encuentran en el directorio /system/app.

También se encuentra disponible una lista de proceso en ejecución en el DDMS.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 21 de 29

Figura 11. Lista de proceso en ejecución

La depuración a gran escala de una aplicación Android va más allá del ámbito tratado en estetutorial. Para mayor información, consulte los Recursos.

Construir el proveedor de contenido y el ejemplo de la aplicaciónGoogle Maps

Ahora que ha visto un ejemplo completo de aplicación, analicemos rápidamente una aplicaciónmás compleja.

Proveedor de contenido y Google Maps

Esta segunda aplicación examinada en este tutorial se construye con un tema de un servicio demóvil profesional (tal vez un técnico en reparación de producto) que debe esquematizarse hastala próxima llamada de servicio. La aplicación aprovecha la base de datos incorporada de loscontactos de Android como un almacenamiento de registros. Este tutorial le dará conocimientopara acceder a los datos desde un proveedor de contenido, como así también un vistazo a unaintención en funcionamiento a medida que usamos los datos de la dirección que se encuentranen la base de datos de los contactos para realizar una búsqueda de Google Maps. Para queeste tutorial funcione adecuadamente en su Emulator de Android, asegúrese de tener uno o máscontactos registrados y de completar el campo de dirección particular. La Figura 12 muestra elEmulator con algunas entradas en la aplicación del contacto.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 22 de 29

Figura 12. Emulador con entradas en la aplicación del contacto

A continuación aparece el primero de los dos fragmentos de código para la segunda aplicación.Tenga en cuenta que esta clase principal de aplicación Activity extiende la ListActivity. Estoes porque vamos a mostrar la información en una lista.

Listado 6 Primer fragmento de la segunda aplicación

public class MobileServiceCallContacts extends ListActivity{ final String tag = "MSCC"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main);

// Get a cursor with all people Cursor c = getContentResolver().query(People.CONTENT_URI, null, null,

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 23 de 29

null, null); startManagingCursor(c);

ListAdapter adapter = new SimpleCursorAdapter(this,android.R. layout.simple_list_item_1,c,new String[] {People.NAME} ,new int[] {android.R.id.text1}); setListAdapter(adapter);

}...}

Tenga en cuenta el uso de la clase de cursor para solicitar la base de datos de los contactos.Este cursor "conjunto de resultados" se enlaza a la UI a través de la clase conocida como unListAdapter. La Figura 13 muestra la aplicación en funcionamiento a medida que presenta loscontactos disponibles en el dispositivo. Tenga en cuenta que no existe orden de clasificación eneste monitor.

Figura 13. Aplicación en acción

Cualquiera de los contactos se puede seleccionar con una pulsación (clic del ratón), el botóncentral en el emulador o al presionar la tecla Enter en su teclado. Una vez que se seleccionaesta entrada, el código debe realizar una búsqueda para obtener la dirección del contactoseleccionado. Aquí es donde el método de anulación onListItemClick() entra en juego. Estaimplementación del método tiene cuatro argumentos importantes. El de mayor interés aquí esel método dbidentifier. Debido a que el cursor hacía referencia a la UI, cuando se invoca estemétodo, en realidad recibe un identificador para el origen de datos fundamentales. El campodbidentifier se puede usar para consultar la base de datos de los contactos para la informacióndeseada. También se puede usar para simplemente iniciar la aplicación de los contactos con unaintención como se muestra en el código que se comenta en el Listado 7.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 24 de 29

Listado 7. El método de anulación onListItemClick()

@Override protected void onListItemClick(ListView list,View view,int position,long dbidentifier) { super.onListItemClick(list,view,position,dbidentifier);

try { // this commented out code below will launch the Contacts application \ // and "view" the contact Intent myIntent = \new Intent(android.content. // Intent.VIEW_ACTION,new ContentURI("content://contacts/people/" // + dbidentifier)); startSubActivity(myIntent,position);

// let's lookup specifics on this record ContentURI theContact = \new ContentURI(android.provider.Contacts.ContactMethods.CONTENT_URI.toURI());

// IMPORTANT // in order to use this sample application, you need to have at least // one Contact record on your Android emulator\ // and be sure to have populated the 'Home Address field' //

// this "where clause" is for HOME address and for the person record // selected in the GUI (id, dbidentifier) Cursor c = managedQuery(theContact,null," type = 1 and person = " + dbidentifier,null);

if (!c.first()) { showAlert("MSCC","No Contact Methods Available!","",true); return; }

String address = c.getString(c.getColumnIndex("data"));

address = address.replace("\n",""); address = address.replace(",",""); address = address.replace(" ","+");

Intent geoIntent = new Intent("android.intent.action.VIEW", new ContentURI\("geo:0,0?q=" + address)); startActivity(geoIntent); } catch (Exception ee) { Log.i(tag,ee.getMessage()); } }

Una vez que se ha obtenido la dirección, un par de operaciones simples en cadena sonnecesarias para limpiar los datos para prepararlo para una consulta a Google Maps. La geoIntentes una intención nueva creada para realizar una búsqueda geo que en la imagen predeterminadadel Emulador Android se satisface con una llamada a Google Maps.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 25 de 29

Todos los elementos principales de la primera aplicación se mantienen válidos aún para estaaplicación. Existe una sola actividad lanzada desde la pantalla de la aplicación principal. Existe,por supuesto, el archivo AndroidManifest.xml que identifica nuestra nueva aplicación. Recuerde, elcódigo fuente completo está disponible en la sección Descargas.

Existe una información final que es importante para esta segunda aplicación deejemplo. En el archivo AndroidManifest.xml, existe una entrada adicional que le dapermiso a la aplicación para leer la base de datos de los contactos: <uses-permissionid="android.permission.READ_CONTACTS" />. Sin este permiso explícito, el kernel de Linuxprevendrá que la aplicación acceda a la base de datos de los contactos.

Resumen

Este tutorial introdujo la plataforma Android, las Herramientas desarrolladoras de Android y loselementos claves del desarrollo Android en Eclipse. Las Herramientas desarrolladoras de Androidpermiten aprovechar el vasto entorno de desarrollador de Eclipse para construir y probar lasaplicaciones Android. Debería estar preparado para crear sus propias aplicaciones Android.

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 26 de 29

Descargas

Descripción Nombre tamañoExample source code os-eclipse-android.examples.zip 67KB

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 27 de 29

RecursosAprender

• El libro Android del autor se encuentra parcialmente disponible online en ManningPublications.

• La información fuente autorizada de Android está en el sitio web Android de Google, dondepuede encontrar enlaces y documentación de proyectos para descargar el Android SDK.

• Consulte la "Recommended Eclipse reading list".• Lea el tutorial "Build a mobile RSS reader" para aprender cómo leer, analizar y mostrar el

RSS u otro dato XML en aplicaciones móviles, que incluyen sus propias mezclas, usando lasHerramientas desarrolladoras de Android.

• Navegar en todo el contenido de Eclipse en developerWorks.• ¿Ya conoce Eclipse? Lea el artículo developerWorks "Comience a utilizar la plataforma

Eclipse" para aprender sobre sus orígenes y arquitectura, y cómo ampliar Eclipse con losplug-ins.

• Expanda sus habilidades de Eclipse al verificar los recursos del proyecto de Eclipse de IBMdeveloperWorks.

• Para escuchar entrevistas interesantes y discusiones para los desarrolladores de software,consulte los podcasts de developerWorks.

• Manténgase actualizado con Technical events and webcasts de developerWorks.• Vea y aprenda acerca de funciones de productos y tecnologías IBM y de código abierto con

el developerWorks On demand demos gratuitos.• 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íasde códigos abiertos y a utilizarlos con los productos de IBM.

Obtener los productos y tecnologías

• Consulte las últimas descargas de tecnología de Eclipse en IBM alphaWorks.• Instale los plug-ins de Android Development Tools (ADT) usando la actualización de software

para Eclipse. También puede descargar Android SDK y aprender cómo instalar, configurar yusar el Android SDK.

• Descargue la Plataforma de Eclipse y otros proyectos desde la Eclipse Foundation.• Descargue versiones de prueba de los productos de IBM, y obtenga sus herramientas

y productos de middleware de DB2®, Lotus®, Rational®, Tivoli® y WebSphere® paradesarrollo de aplicaciones

• Innove en su próximo proyecto de desarrollo con el software de prueba IBM, disponible paradescargarlo o en DVD.

Comentar

• Los Grupos de noticias en la Plataforma de Eclipse deberían detenerse primero paradiscutir cuestiones relacionadas con Eclipse. (Al seleccionar esto se lanzará su aplicaciónpredeterminada de lectura de noticias de Usenet y se abrirá eclipse.platform).

developerWorks® ibm.com/developerWorks/ssa/

Desarrolle aplicaciones Android con Eclipse Pagina 28 de 29

• Los Grupos de noticias de Eclipse tienen varios recursos para personas interesadas enutilizar y extender Eclipse..

• Participe en los blogs de developerWorks y únase a la comunidad de developerWorks.

ibm.com/developerWorks/ssa/ developerWorks®

Desarrolle aplicaciones Android con Eclipse Pagina 29 de 29

Sobre el autor

Frank Ableson

Después de que terminara su carrera basquetbolista colegial sin un contratomultianual para jugar para los Lakers de Los Ángeles, Frank Ableson cambió suenfoque hacia el diseño de software informático. Disfruta solucionando problemascomplejos, particularmente en las áreas de comunicaciones e interfaces dehardware. Cuando no está trabajando, está pasando el tiempo con su esposa Nikki ysus hijos. Es posible contactar a Frank escribiendo a [email protected].

© Copyright IBM Corporation 2013(www.ibm.com/legal/copytrade.shtml)Marcas(www.ibm.com/developerworks/ssa/ibm/trademarks/)