curso de android - full programacion
Post on 13-Oct-2015
53 Views
Preview:
TRANSCRIPT
-
5/23/2018 Curso de Android - Full Programacion
1/285
-
5/23/2018 Curso de Android - Full Programacion
2/285
Android 4
Principios del desarrollo de aplicaciones Java
Este libro se dirige a desarrolladores, incluso noveles, que deseen conocer y dominar eldesarrollo de aplicaciones Java en Android 4 (en versiones 4.0 - alias Ice Cream Sandwich - y4.1 - alias Jelly Bean en el momento de su edicin). Para su lectura, se requieren conocimientosbsicos en programacin Java y en el uso de XML pero ningn requisito particular sobre Android.
Despus de una presentacin de la plataforma Android y de susprincipios especficos deprogramacin, aprender a instalar y configurar el entorno de desarrollo. A continuacin, iravanzando de forma gradual para conocer todos los elementos esencialespara la creacin deaplicaciones Android. De este modo, aprender a crear interfaces cada vez ms complejas(layouts, recursos, ActionBar, mens, listas, popups, webview, etc.), a gestionar la navegaciny la comunicacin entre las distintas interfaces de una aplicacin o entre varias aplicaciones.Descubrir los mtodos de creacin de interfaces persona lizadas (gestin de temas, animacionesy fuentes) as como la gestin de los diferentes eventos de usuario (clic, rotacin, etc.).Aprender a optimizar el cdigo de la aplicacin, sus interfaces y a gestionar la fragmentacinde la plataforma(versiones de Android, tamao y resolucin de pantallas, diferencias en elhardware, etc.). Ver cmo obtener datos bsicos para una aplicacin (webservices, gestin dela conectividad, parsing Xml / Json), cmo almacenarlos (sharedPreferences, archivos, base dedatos SQLite) y cmo compartirlos con otras aplicaciones (ContentProvider, Intent, etc.).
Igualmente, podr crear e interactuar con mapas (Google Maps, localizacin, conversinposicin/direccin).
Finalmente, aprender a gestionar los distintos tratamientos e interacciones realizados en unaaplicacin y a identificar los que se deben ejecutar como tareas en segundo plano (AsyncTask,Thread, Service, Broadcast Receiver, Widget, etc.) as como los mtodos de acceso alas diferentes funcionalidades de un dispositivo Android(llamadas, sms, cmara, acelermetro,sensor magntico, Bluetooth, TTS, NFC, etc.).
Los captulos del libro:Prefacio La plataforma Android El entorno de desarrollo Principios de programacin Miprimera aplicacin: HelloAndroid Depuracin y gestin de errores Creacin de interfaces
sencillas Comunicacin entre vistas/aplicaciones Personalizacin y gestin de eventos Creacin de interfaces avanzadas Persistencia de datos Gestin y comparticin de datos Tratamiento en tareas en segundo plano Google Maps y geolocalizacin Telefona Acceso alhardware
Nazim BENBOURAHLA
Despus de haberse formado como ingeniero informtico, Nazim BENBOURAHLA adquiererpidamente un puesto de desarrollador para Android en una gran empresa de servicios.Actualmente, es un reconocido miembro de la comunidad de desarrolladores de Android: autor yanimador del blog de tutoriales tutos-android.com, profesor de Android en la EPITA, miembro delParis Android User Group, autor de artculos sobre Android en la Linux Mag y autor de tutorialesen developpez.com. Comparte a travs de las pginas de este libro toda su experiencia y toda supasin para este tipo de desarrollos.
-
5/23/2018 Curso de Android - Full Programacion
3/285
24/4/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=70896 1/1
Prefacio
Este libro va dirigido a los desarrolladores que deseen descubrir y conocer la plataforma Android y,
particularmente, el desarrollo de aplicaciones Android en Java.
Esta obra no requiere ningn tipo de conocimiento previo sobre la plataforma Android y, de hecho,
slo requiere conocimientos bsicos en programacin Java y XML. El objetivo es adquirir los
fundamentos necesarios para el desarrollo de aplicaciones Android tratando todas las nociones
esenciales y a travs de varios ejemplos.
La versin utilizada en este libro es la ltima versin de Android (4.0 y 4.1, llamadas Ice Cream
Sandwich y Jelly Bean respectivamente). Ver cmo gestionar la compatibilidad con versiones
anteriores de Android, con los tamaos de pantalla y con los distintos dispositivos disponibles en el
mercado.
Despus de presentar la plataforma Android, aprender a instalar y a configurar el entorno de
desarrollo necesario para la creacin de aplicaciones. A continuacin, evolucionar de forma
progresiva mientras va conociendo todos los elementos esenciales en la creacin de aplicaciones para
Android, comenzando por una presentacin de los fundamentos de programacin especficos de esta
plataforma.
Seguidamente, aprender a crear interfaces cada vez ms complejas (layouts, recursos, ActionBar,
mens, listas, popups, webview, etc.) y a gestionar la navegacin y la comunicacin entre las distintas
interfaces de una aplicacin o entre varias aplicaciones.
Descubrir los mtodos de creacin de interfaces personalizadas (gestin de temas, animaciones y
fuentes) as como la gestin de los distintos eventos de usuario (clic, rotacin, etc.).
Aprender a optimizar el cdigo de la aplicacin y sus interfaces y a gestionar la fragmentacin de la
plataforma (versin de Android, tamao y resolucin de pantalla, diferencias en el hardware, etc.).
Tambin ver cmo obtener los datos necesarios para la aplicacin (web services, gestin de la
conectividad, parsing XML/JSON), cmo almacenarlos (sharedPreferences, archivos, base de datos
SQLite) y cmo compartirlos con otras aplicaciones (ContentProvider, Intent, etc.). Podr crear einteractuar con mapas (Google Map, localizacin, conversin posicin/direccin).
Aprender a gestionar los distintos tratamientos e interacciones realizados en una aplicacin y a
identificar los que deben ejecutarse como tareas en segundo plano (AsyncTask, Thread, Service,
Broadcast Receiver, Widget, etc.).
Adems, descubrir los distintos mtodos que permiten acceder a componentes hardware y a
funcionalidades de un dispositivo Android (llamadas, SMS, cmara, acelermetro, sensor magntico,
Bluetooth, TTS, NFC, etc.).
Todos los ejemplos mostrados en esta obra estn disponibles para su descarga en la pgina
Informacin.
-
5/23/2018 Curso de Android - Full Programacion
4/285
Presentacin
Android es un OS (Operating Systemo Sistema Operativo en castellano) Open Source pensado para
telfonos mviles y desarrollado por la Open Handset Alliance(OHA) bajo autorizacin de Google. La
OHA se compone de alrededor de 80 empresas, tales como Samsung, HTC, SFR, Orange, Asus,
Qualcomm...
Android se basa en un kernel Linux y se distribuye bajo una licencia Apache License 2.0. Separa la
capa hardware de la capa lgica, es decir, cualquier telfono Android puede ejecutar la mismaaplicacin y, de este modo, se puede crear un amplio abanico de posibilidades para los fabricantes,
los usuarios y los desarrolladores.
Android es tambin un framework y, como desarrollador, tendr acceso al SDK (Software Development
Kit- Kit de desarrollo) y a todo el cdigo fuente de la plataforma. Esto le permitir comprender su
funcionamiento, crear versiones personalizadas del OS y, por supuesto, desarrollar sus propias
aplicaciones.
Por consiguiente, varios dispositivos exticos han visto la luz con Android: radios de coche, relojes,
cascos para esquiar, etc.
-
5/23/2018 Curso de Android - Full Programacion
5/285
Google Play
Para permitir a los usuarios acceder a un gran surtido de aplicaciones, Android utiliza un marketllamado Google Play(anteriormente llamado Android Market).
Permite a los usuarios:
Buscar y descargar aplicaciones, libros, canciones y pelculas.
Puntuar, comentar, desinstalar y actualizar las aplicaciones que ya se han instalado en eldispositivo.
Como desarrollador, publicar una aplicacin en Google Play es muy sencillo y se realiza en pocospasos (vase el captulo Principios de programacin - Exportacin y certificacin de una aplicacin):
Exportacin de la aplicacin.Certificacin de la aplicacin.
Envo al market.
1. Creacin de una cuenta de desarrollador
Para publicar una aplicacin, necesita una cuenta de desarrollador de Android.
La creacin de una cuenta de desarrollador requiere:
Una direccin de Gmail vlida.
Un nmero de te lfono.
25 $ (alrededor de 20 ).
Conctese a https://play.google.com/apps/publish/ para crear su propia cuenta.
Una vez haya creado la cuenta, podr:
Publicar una nueva aplicacin.
Seguir el estado de sus aplicaciones ya publicadas (comentarios, puntuaciones, estadsticas,
errores, etc.).Eliminar aplicaciones ya publicadas.
Actualizar sus aplicaciones (versin, descripcin, etc.).
El identificador de una aplicacin Android en el market no es su nombre sino el identificador desu package. Varias aplicaciones pueden tener un nombre similar, pero slo el identificador del
package debe ser nico (ver captulo Mi primera aplicacin: HelloAndroid).
2. Publicacin de una aplicacin
La publicacin de una aplicacin se realiza en la direccinsiguiente:https://market.android.com/publish/Home
https://market.android.com/publish/Homehttps://play.google.com/apps/publish/https://market.android.com/publish/Homehttps://play.google.com/apps/publish/ -
5/23/2018 Curso de Android - Full Programacion
6/285
Para iniciar el envo de una aplicacin, haga clic en el botn Subir aplicacin. Un pop-up permiteseleccionar el archivo correspondiente a la aplicacin que se desea publicar.
La nueva versin del market permite aadir archivos adicionales a su aplicacin si sta nosobrepasa los 50 MB. Esta opcin es muy til para los videojuegos, por ejemplo.
Cuando finaliza el envo, un cuadro de dilogo le permite introducir algunos datos sobre laaplicacin.
Entonces podr:
Guardar los datos y pasar a la siguiente etapa.
Reemplazar la aplicacin seleccionada.
Eliminar la aplicacin seleccionada.
En la siguiente etapa hay que aadir algunos datos sobre su aplicacin:
Un mnimo de dos capturas de pantalla.
Un icono de la aplicacin en alta definicin (512 x 512).
Los idiomas soportados por la aplicacin.
Un ttulo y una descripcin para la aplicacin en cada idioma soportado.
El tipo de aplicacin (juego o aplicacin).
La categora de la aplicacin (libro, financiera, multimedia, social, etc.).
El tipo de pblico al que va dirigida (todo el mundo, pblico concreto, etc.).
Los pases en los que la aplicacin estar disponible.
Aceptar los trminos y condiciones de Google Play.
Una vez se ha introducido toda esta informacin, podr:
Guardar los cambios sin publicar la aplicacin.
Guardar los cambios y publicar la aplicacin.
La duracin de la publicacin de una aplicacin es de algunos minutos. La comprobacin serealiza a posteriori. Si los usuarios indican que una aplicacin es maliciosa, se retira del market
y de todos los dispositivos en los que se encuentre.
-
5/23/2018 Curso de Android - Full Programacion
7/285
3. Seguimiento y actualizacin de una aplicacin
Para realizar el seguimiento de sus aplicaciones, conctesea:https://play.google.com/apps/publish/
Un panel muestra una lista de todas sus aplicaciones, con estadsticas para cada una de ellas.
Se puede acceder a la siguiente informacin:
Nombre de la aplicacin.
Su versin.
Su tipo y su categora.
Su puntuacin media.
Nmero de instalaciones tota les.
Nmero de instalaciones activas (significa que la aplicacin est todava presente en losdispositivos).
Su precio.
Errores reportados por los usuarios.
El estado de la aplicacin.
El botn Comments(comentarios) permite mostrar los detalles de las puntuaciones otorgadas a laaplicacin as como los comentarios asociados.
El botn Statistics (estadsticas) permite visualizar grficos de estadsticas sobre su aplicacin(grfico de instalacin, instalacin por versin de Android, instalacin por tipo de dispositivo,instalacin por pas e instalacin por idioma).
Si hace clic en el nombre de una aplicacin, acceder a una pgina que le permite publicar unaactualizacin.
Esta pgina permite visualizar toda la informacin ya introducida. Es entonces cuando se puede:
Modificar estos datos.
https://play.google.com/apps/publish/ -
5/23/2018 Curso de Android - Full Programacion
8/285
Eliminar la aplicacin.
Guardar los cambios.
Publicar los cambios.
Puede enviar una nueva versin de su aplicacin en cualquier momento. Una vez enviada la nuevaversin, deber completar el campo Recent Changes(ltimos cambios) para cada idioma soportadopara informar al usuario sobre las novedades aportadas por la nueva versin de la aplicacin.
-
5/23/2018 Curso de Android - Full Programacion
9/285
Instalacin del entorno Java
El primer requisito para desarrollar en Android es la instalacin de un entorno Java y, concretamente,
del JDK(Java Development Kit- Kit de desarrollo Java).
Para instalar (si todava no estuviera instalado) un entorno Java, vaya a la
siguiente pgina del sitio web de
Oracle:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Descargue e instale la versin del JDK (en este caso la versin 6.38) que
se corresponda con su OS.
http://www.oracle.com/technetwork/java/javase/downloads/index.html -
5/23/2018 Curso de Android - Full Programacion
10/285
SDK Android
1. Presentacin
La siguiente etapa permite instalar y configurar el SDK Android. Este SDK contiene todas las
herramientas necesarias para crear una aplicacin Android. Est disponible para Windows, Mac OS y
Linux.
Cada versin del SDK contiene:
aapt - Android Asset Packaging Tool: esta herramienta sirve para crear y analizar archivos
*.apk (Android Package) (vase el captulo Principios de programacin - Principios generales).
Estos archivos contienen el programa de su aplicacin.
adb - Android Debug Bridge: el objetivo de esta herramienta es establecer conexiones con
un telfono Android o un emulador facilitando el acceso a su terminal. Todo ello para listar su
contenido o ejecutar comandos. Esta herramienta tambin sirve para transferir una aplicacin
o archivos a un telfono Android o a un emulador.
dx - Dalvik Cross-Assembler: esta herramienta sirve para fusionar y convertir archivos declases estndar Java (*.class) en archivos binarios (*.dex). Estos archivos se pueden ejecutar
en la VM Dalvik (vase el captulo Principios de programacin - Principios generales).
ddms - Dalvik Debug Monitor Service(vase el captulo Depuracin y gestin de errores -
Principios): esta herramienta se utiliza en la depuracin de aplicaciones y permite:
Hacer captura de pantallas.
Ver los threads en ejecucin.
Ver el Logcat.
Averiguar la lista de procesos en ejecucin en e l dispos itivo.
Simular el envo de mensajes y llamadas.
Simular una localizacin, etc.
El SDK tambin contiene un sistema que permite crear y gestionar emuladores as como la
documentacin para cada versin de Android y ejemplos para cada una de las API.
2. Instalacin
Para instalar el SDK Android, dirjase a la siguiente
direccin:http://developer.android.com/sdk/index.html, y descargue e instale la versin del SDKcorrespondiente a su OS.
En Windows: evite tener espacios en las rutas de su SDK.
Una vez ha terminada la insta lacin, ejecute el SDK Android (ejecutable SDK Manager en
Windows y binario androidpresente en la carpeta Toolspara Mac y Linux). Debera abrirse la
siguiente ventana:
http://developer.android.com/sdk/index.html -
5/23/2018 Curso de Android - Full Programacion
11/285
Esta herramienta, Android SDK Manager, le permitir actualizar su SDK, instalar nuevas versiones
de Android o actualizar las versiones ya instaladas.
Se proceder a instalar, como mnimo, los siguientes elementos:
Todo el contenido de la seccin Tools:
SDK Tools (instalado por defecto): contiene los elementos necesarios para desarrollar,
probar y depurar su aplicacin. Se instala por defecto con el SDK Android y se actualizar
cuando aparezcan nuevas versiones.
SDK Plateform-tools: contiene herramientas de desarrollo, de pruebas y de depuracin para
su aplicacin. Estas herramientas se adaptan a la versin de Android utilizada por su
aplicacin.
En la seccin Android 4.0.3y 4.1:
Documentation Android: la documentacin de la versin de Android se leccionada.
SDK Plateform: la versin del SDK.
Sample: ejemplos de las API.
Google APIs: la versin del SDK Android incluyendo las APIs de Google (Google Maps, por
ejemplo).
Source: los fuentes de esta versin de Android.
En la seccin Extras, nicamente:
Android Support Package: anteriormente llamado "compatibility package" (paquete de
compatibilidad). Representa una librera que se incluir en el proyecto Android para utilizarfuncionalidades no incluidas en el framework Android (tales como el ViewPager) o las
funcionalidades no disponibles en todas las versiones de Android (tales como
los Fragments).
Google USB Driver Package: necesario si se dispone a desarrollar en Windows con un
-
5/23/2018 Curso de Android - Full Programacion
12/285
telfono Google (Nexus one, Nexus S o Galaxy Nexus). Contiene los drivers para
desarrollar, probar y depurar en estos telfonos.
A continuacin, haga clic en el botn Install Packages (Instalar paquetes) para finalizar la
instalacin.
3. Utilizacin
Una vez se ha instalado el SDK, podr explorar su estructura de directorios:
La carpeta add-ons contiene las distintas extensiones o SDK que ha descargado fuera del
SDK principal (SDK tablet Sony y Google APIs, por ejemplo).
La carpeta docscontiene la documentacin de Android.
La carpeta extras contiene las herramientas que ha descargado (seccin Extras en el SDK
Manager).
La carpeta platforms contiene las distintas versiones del SDK que se ha descargado,
organizadas por nmero de versin.
La carpeta platform-toolscontiene herramientas que le permiten desarrollar y depurar sus
aplicaciones.
La carpeta samplescontiene un surtido de ejemplos de las APIs de Android.
La carpeta sourcescontiene los fuentes de Android en funcin de las versiones de l SDK.
La carpeta toolscontiene herramientas que facilitan el uso del SDK Android.
AVDManageres el gestor de emuladores (nicamente presente en Windows).
SDKManageres el gestor del SDK (nicamente presente en Windows).
-
5/23/2018 Curso de Android - Full Programacion
13/285
Eclipse
1. Presentacin
El segundo elemento necesario para desarrollar en Android es Eclipse. Este programa es un IDE
(Integrated Development Environment- Entorno de desarrollo integrado) que facilita el desarrollo y la
creacin de aplicaciones.
Eclipse es el IDE utilizado en este libro, porque se integra ms fcilmente con el SDK Android.
Tambin puede utilizar Netbeans o cualquier otro IDE.
2. Instalacin
Para instalar Eclipse, dirjase a www.eclipse.org/downloads/y descargue la versin de Eclipse
para Java (a lo largo del libro se utilizar la versin Indigo). Cuando se haya descargado el
archivo, extraiga la carpeta del archivo comprimido zip en una ubicacin de su eleccin.
3. Configuracin
Inicie Eclipse mediante el acceso que se encuentra en la raz de la carpeta extrada.
En la primera ejecucin de Eclipse, deber configurar su workspace. Se trata de su espacio de
trabajo, todos los proyectos que desarrollar se crearn y se guardarn en esta carpeta.
Si se encuentra detrs de un proxy, debe configurarlo en las preferencias de Eclipse.
Configurar Eclipse en espaol
Si lo desea, puede configurar Eclipse en espaol siguiendo los pasos descritos a continuacin:
Para empezar, haga clic en Help - Install New Software. A continuacin, haga clic en el
botn Add. Introduzca el nombre que desee, la siguiente
http://www.eclipse.org/downloads/ -
5/23/2018 Curso de Android - Full Programacion
14/285
URL:http://www.eclipse.org/babel/downloads.phpy haga clic enOK. Para finalizar, seleccione
todos los plugins disponibles e inicie la instalacin.
Puede obtener ms informacin en la direccin
siguiente:http://www.eclipse.org/babel/downloads.php
http://www.eclipse.org/babel/downloads.phphttp://www.eclipse.org/babel/downloads.php -
5/23/2018 Curso de Android - Full Programacion
15/285
Plugin ADT
1. Presentacin
El siguiente paso consiste en la integracin del plugin ADT (Android Development Tools) en Eclipse.Este plugin le da acceso a un entorno de desarrollo integrado para Android en Eclipse.
Utiliza las caractersticas de Eclipse para ayudarle en varias tareas:
Crear fcilmente proyectos Android.
Crear interfaces y componentes basados en el framework Android.
Gestionar emuladores.
Gestionar y visualizar logs.
Depurar su aplicacin utilizando el SDK Android.
Exportar sus aplicaciones.
Una nueva versin del plugin ADT est disponible aproximadamente cada 3 o 4 meses.Recuerde comprobar las actualizaciones.
2. Instalacin
Para comenzar, haga clic en Help - Install new software. A continuacin, haga clic en el botn Add.Introduzca un nombre, la siguiente URL: https://dl-ssl.google.com/android/eclipse/ y haga clicen OK.
https://dl-ssl.google.com/android/eclipse/ -
5/23/2018 Curso de Android - Full Programacion
16/285
Si no accede a los recursos , reemplace el protocolo en la URL (https por un s imple http).
Pasados unos segundos, aparecer la siguiente ventana:
-
5/23/2018 Curso de Android - Full Programacion
17/285
A continuacin se enumeran los componentes que se instalarn:
Android DDMS (Android Dalvik Debug Monitor Server): herramienta muy til que integra ladepuracin y el control del telfono o del emulador Android desde Eclipse.
Android Development Tools: herramienta til para el desarrollo de aplicaciones en Android.
Android Hierarchy Viewer: herramienta que permite visualizar la arquitectura de sus vistasmediante un grfico. til para la optimizacin de las vistas (vase el captulo Creacin deinterfaces avanzadas - Optimizar sus interfaces).
Android Traceview: permite mostrar el registro y los mensajes provenientes de su telfono oemulador mediante un grfico.
Seleccione todos los elementos y, a continuacin, haga clic en Next. Compruebe su seleccinmediante el botn Next. Acepte las condiciones y los trminos de uso y, finalmente, haga clicenFinish.
Cuando haya finalizado la instalacin, reinicie Eclipse.
Si encuentra problemas realizando la instalacin, puede descargar el archivo con la ltimaversin del plugin ADT desde la siguiente direccin: http://developer.android.com/sdk/eclipse-
adt.htmly despus importarlo desde Eclipse.
3. Configuracin
http://developer.android.com/sdk/eclipse-adt.html -
5/23/2018 Curso de Android - Full Programacion
18/285
Cuando Eclipse reinicia, aparece una nueva ventana para configurar su SDK.
Elija la opcin Use existing SDK que le permite configurar el plugin para utilizar el SDKdescargado en e l apartado anterior. Haga clic en Nexty, a continuacin, en Finish.
Aparecern tres nuevos iconos en la barra de herramientas de Eclipse:
El primer icono sirve para iniciar el SDK Manager, actualizarlo o descargar nuevas versionesdel SDK.
El segundo icono se utiliza para gestionar los emuladores. De este modo, podr crearfcilmente nuevos emuladores o modificar los existentes .
El tercer icono sirve para escanear sus proyectos en busca de errores mediante laherramienta Android Lint (vase el captulo Depuracin y gestin de errores - Android Lint).
-
5/23/2018 Curso de Android - Full Programacion
19/285
Emulador
1. Presentacin
El emulador es una herramienta que permite simular un telfono o una tablet Android. Por lo tanto, le
permite desarrollar en Android incluso s i no dispone de un te lfono o de una tablet Android.
Tambin permite crear mltiples tipos de emulador para simular diferentes tipos de telfonos, detamaos de pantalla y de resoluciones.
2. Creacin
Como hemos visto anteriormente, Eclipse dispone de un icono dedicado a los emuladores.
Cuando haga clic en este icono, aparecer una pantalla que le permitir:
Ver la lista de emuladores ya creados.
Crear un nuevo emulador.
Modificar un emulador.
Eliminar o reparar un emulador.
Ver los detalles de un emulador.
Iniciar un emulador.
Haga clic en el botn Newpara crear un nuevo emulador.
-
5/23/2018 Curso de Android - Full Programacion
20/285
Puede especificar la siguiente informacin relativa a su emulador:
AVD Name: nombre del emulador.
Device: dispositivo predefinido con una serie de caractersticas hardware (GPS, acelermetro,etc.). Puede definir sus propios dispositivos, mediante la pestaa Device Definitions, o usar
los ya existentes por defecto.
Target: versin de Android del emulador.
CPU/ABI: procesador asociado al dispositivo.
Keyboard: si desea emular un teclado conectado al dispositivo.
Skin: si desea que se muestren los controles hardware en la emulacin.
Front Camera: seleccione el tipo de cmara frontal (ninguna, emulada, webcam).
Back Camera: seleccione el tipo de cmara trasera (ninguna, emulada, webcam).
Memory Options: definicin de la memoria RAMy de la memoria dinmica de la VM.
Internal storage: memoria interna del dispositivo.
SD Card: tamao de la tarjeta SD (opcional).
-
5/23/2018 Curso de Android - Full Programacion
21/285
Emulation Options: activar o desactivar tanto la posibilidad de guardar el estado del
emulador (como para una mquina virtual, opcional) como la aceleracin de la GPU mediante
OpenGLES (opcional).
Ahora, podr crear su primer emulador en Android 4.0.3.
Puede habilitar la aceleracin de hardware en su emulador para que se ms reactivo
(opcinGPU Emulationen la seccin Hardwaredel emulador).
Seleccione el emulador y haga clic en Startpara iniciarlo. Tenga un poco de paciencia durante
el transcurso de su arranque.
-
5/23/2018 Curso de Android - Full Programacion
22/285
Una vez se haya iniciado e l emulador, no es necesario cerrarlo y volverlo a iniciar cada vez que
modifique su aplicacin. Basta, s implemente, con e jecutarla de nuevo en el emulador deseado.
3. Configuracin
Siempre puede modificar un emulador.
Para ello, haga clic sobre el icono de gestin de emuladores en Eclipse, seleccione un emulador
y haga clic en e l botn Edit.
-
5/23/2018 Curso de Android - Full Programacion
23/285
./android list avd
./android create avd --target "android-15" --name "Android-4.0.3"
Todas las caractersticas del emulador se pueden modificar.
4. Creacin de un emulador por lnea de comandos
Puede enumerar el conjunto de emuladores creados mediante e l siguiente comando:
Para ejecutar este comando debe ubicarse en la carpeta toolsde su SDK.
Con el que obtendr, por ejemplo:
Tambin puede crear emuladores mediante e l binario Androidpresente en la carpeta toolsdel SDK.
A continuacin se muestra el ejemplo de un emulador cuyo nombre es Android-4.0.3 y que
funcionar con la versin 4.0.3 de Android.
Obtendr el siguiente resultado:
-
5/23/2018 Curso de Android - Full Programacion
24/285
Puede responder yes a la pregunta Do you wish to create a custom hardware profile? (Deseacrear una configuracin hardware especfica?), para especificar los componentes hardware del
emulador que est creando.
-
5/23/2018 Curso de Android - Full Programacion
25/285
Principios generales
La eleccin de la arquitectura Android se basa en la idea de controlar los recursos y el consumo. Las
aplicaciones Android se ejecutan en un sistema con restricciones (velocidad de procesador, memoria
disponible, consumo de batera, diferencias en la visualizacin...).
Como desarrollador, deber prestar especial atencin a los siguientes puntos:
La creacin de nuevos objetos.
El uso de recursos (procesador, RAM, almacenamiento, etc.).
El consumo de la batera.
La diversidad de tamaos y reso luciones de pantalla y de configuraciones de hardware.
Como cualquier pgina web, una pantalla Android slo muestra una vista a la vez. La sucesin de
pginas se almacena en una pila llamada Back Stack (vase el captulo Principios de programacin -
Ciclo de vida de una actividad), lo que permite volver a la pgina anterior cuando se usa el botn atrs
del telfono (parecido al botn atrs de un navegador).
1. Dalvik
Android se basa en una mquina virtual particular llamada Dalvik, que tiene varias caractersticas
especficas:
El uso de registros y no de pilas.
Una capa de abstraccin entre la capa lgica y la capa de hardware.
30% de instrucciones menos que una JVM (Java Virtual Machine) clsica.
Un tiempo de ejecucin dos veces ms rpido que una JVM clsica.
Por defecto, las aplicaciones se aslan unas de otras (1 aplicacin = 1 proceso). Esto impide elefecto domin ante la cada de una aplicacin.
2. Arquitectura Android
La arquitectura Android se compone de cinco partes diferenciadas:
Aplicacin: representa el conjunto de de aplicaciones proporcionadas con Android (e-mail,
SMS, calendario, etc.).
Framework Android: representa el framework que permite a los desarrolladores crear
aplicaciones accediendo al conjunto de APIs y funcionalidades disponibles en el telfono
(fuentes de contenido, gestor de recursos, gestor de notificaciones, gestor de actividades,
etc.).
Libreras: Android dispone de un conjunto de libreras que utilizan los distintos componentes
del sistema.
Android Runtime: contiene, entre otros, la JVM Dalvik.
Linux Kernel: el ncleo Linux (2.6) que proporciona una interfaz con el hardware,
gestionando la memoria, los recursos y los procesos Android.
3. NDK (Native Development Kit)
Es posible desarrollar de forma nativa en Android utilizando el NDK (Native Development Kit- Kit de
desarrollo nativo), que se basa en C/C++.
-
5/23/2018 Curso de Android - Full Programacion
26/285
Tambin puede utilizar un mecanismo Java que le permitir llamar a cdigo nativo desde una clase JNI
(Java Native Interface).
El NDK est disponible en la siguiente
direccin:http://developer.android.com/sdk/ndk/index.html
El NDK le da acceso a:
Un conjunto de herramientas que permiten generar cdigo nativo desde archivos fuente
C/C++.
Una herramienta de creacin de archivos apk (vase la siguiente seccin: APK (Android
Package)) a partir de cdigo nativo.
La documentacin, con ejemplos y tutoriales.
4. APK (Android Package)
Un apk es el archivo binario que representa una aplicacin. Este formato se utiliza para distribuir e
instalar aplicaciones.
Para crear un apk, se debe compilar y empaquetar en un archivo una aplicacin Android. Este archivo
contendr:
El cdigo de la aplicacin compilada (.dex).
Los recursos.
Los assets.
Los certificados.
El archivo de manifiesto.
a. Exportacin y certificacin de una aplicacin
Para poder publicar su aplicacin en el Market (Google Play), necesita crear un archivo apk.
Para generar su apk desde Eclipse, Android proporciona una herramienta que se llama aapt,
incluida en el SDK Android e integrada en Eclipse mediante el plugin ADT.
Puede generar dos tipos de apk:
Un apk firmado.
Un apk sin firmar: este formato puede usarse para probar su aplicacin pero no puede
publicarse en el Market.
Para generar un apk, haga clic con el botn derecho sobre el proyecto deseado y, en el men,
haga clic en Android Tools.
http://developer.android.com/sdk/ndk/index.html -
5/23/2018 Curso de Android - Full Programacion
27/285
Puede observar las dos opciones:
Export Signed Application Package(Exportar un APK firmado).
Export Unsigned Application Package(Exportar un APK sin firmar).
Vamos a seleccionar la opcin Export Signed Application Package.
Confirme el proyecto del que desea generar el apk mediante el botn Next.
Para generar un archivo apk firmado, necesitar un keystore (almacn de claves), que sirve para
albergar las claves utilizadas para firmar sus aplicaciones. Puede o bien usar un keystore que ya
usaba previamente, o bien crear uno nuevo.
Para crear un keystore hay que:
Elegir una ubicacin para guardar el keystore.
Indicar una contrasea para el uso del keystore.
Un keystore se compone de varias claves de firma. Cada clave puede servir, por ejemplo, para
firmar una aplicacin distinta.
La siguiente pantalla le permite introducir los datos s iguientes sobre su clave:
Alias: Identificador de la clave.
Contrasea y confirmacin.
Duracin de validez, en aos.
Introducir la informacin del resto de campos (nombre y apellidos, poblacin, pas, etc.).
-
5/23/2018 Curso de Android - Full Programacion
28/285
El ltimo paso consiste en elegir el nombre y la ubicacin del apk generado.
Debe conservar su clave de certificacin cuando haya publicado su aplicacin en el Market. Si
la pierde, no podr actualizar su aplicacin nunca ms.
Tambin puede crear una clave de firma por lnea de comandos mediante el ejecutable keytool.
En Windows, el ejecutable keytool se encuentra en la carpeta bin de la carpeta de instalacin
de Java.
Tambin puede firmar su aplicacin a posteriori mediante el ejecutablejarsigner.
-
5/23/2018 Curso de Android - Full Programacion
29/285
jarsigner -verbose -verify -certs miAplicacion.apk
-
5/23/2018 Curso de Android - Full Programacion
30/285
Componentes Android
El framework Android se compone de algunos elementos esenciales para la creacin de aplicaciones.
En esta seccin, se explicarn estos distintos componentes.
1. Activity (Actividad)
Una actividad es el componente principal de una aplicacin Android. Representa la implementacin y
las interacciones de sus interfaces.
Tomemos, por ejemplo, una aplicacin que enumere todos los archivos mp3 que se encuentran en su
telfono. El proyecto podra descomponerse de la siguiente manera:
Una vista para mostrar la lista de archivos mp3.
Una actividad para implementar la interfaz y las interacciones del usuario con la lista de
archivos mp3.
El framework Android puede decidir "matar" una actividad para liberar recursos para otras
aplicaciones (slo si su actividad ya no est en primer plano) (vase la seccin Ciclo de vida de una
actividad, ms adelante en este captulo).
2. Fragment (Fragmento)
Este concepto se introdujo a partir de la versin 3.0 de Android. Permite construir interfaces ms
flexibles (smartphone/tablet), dinmicas y fciles de utilizar.
Un fragmento puede considerarse como una parte de una interfaz. Por lo tanto, una interfaz
(actividad) puede componerse de varios fragmentos.
Tomemos una interfaz compuesta de dos vistas. En vez de implementar dos actividades distintas, se
podran utilizar los fragmentos. Usando esta alternativa, se obtendran dos interfaces diferenciadas
para telfono o para tablet.
Para un telfono: los fragmentos se separan en dos actividades diferentes. La seleccin de
-
5/23/2018 Curso de Android - Full Programacion
31/285
un elemento de la actividad A (el fragmento A se incluye en la actividad A) mostrar la
actividad B (el fragmento B se incluye en la actividad B).
Para una tablet: su interfaz se compondr de una sola actividad, pero sta estar separada
en dos fragmentos. Cuando el usuario pulse un elemento de l fragmento A, actualizar todo el
contenido del fragmento B sin iniciar una actividad nueva.
3. Servicio (Service)
Un servicio, a diferencia de una actividad, no tiene interfaz pero permite la ejecucin de un
tratamiento en segundo plano (una operacin larga o una llamada remota). Un servicio no se
detendr mientras que no se interrumpa o termine.
Por ejemplo, se puede utilizar un servicio para escuchar msica en segundo plano en su telfono.
4. Broadcast receiver (Receptor de eventos)
Un Broadcast receiver es un componente que reacciona con un evento de sistema (vase la seccin
Intent (Intencin)). Permite, por ejemplo, saber cundo:
El telfono recibe un SMS.
El telfono se enciende.
La pantalla est bloqueada, etc.
Los broadcast receivers no tienen interfaz de usuario y deben realizar tareas ligeras. Si necesita
ejecutar una tarea pesada en la recepcin de un Broadcast receiver, puede, por ejemplo, iniciar un
servicio.
Un Broadcast receiver no puede realizar modificaciones en sus interfaces, slo puede mostrar
una notificacin, iniciar una actividad o un servicio, etc.
5. Content provider (Proveedor de contenido)
Un content provider permite compartir los datos de una aplicacin. Estos datos pueden estar
almacenados en una base de datos SQLite (vase el captulo Persistencia de datos - Almacenamiento
en base de datos), en archivos o en la web. El objetivo es permitir a las aplicaciones consultar estos
datos.
El sistema Android ofrece content providers (disponibles por defecto) que pueden usarse en susaplicaciones:
Contactos.
Agenda.
Multimedia, etc.
6. Intent (Intencin)
Los componentes Android (Actividad, Servicio y Broadcast receiver) se comunican mediante mensajesde sistema que se denominan intents. Los emite el terminal para avisar a la cada aplicacin de la
ocurrencia de eventos.
Tambin puede crear sus propios intents para, por e jemplo, iniciar otras actividades (vase el captulo
Comunicacin entre vistas - aplicaciones).
-
5/23/2018 Curso de Android - Full Programacion
32/285
Hay dos tipos de intents:
Explcito: como, por ejemplo, llamar a una actividad conocida para que ejecute una accin en
concreto.
Implcito: solicitar al sistema qu actividad puede ejecutar una accin especfica (por
ejemplo, abrir un archivo PDF).
a. Intent-filter (Filtro de intenciones)
Los filtros de intenciones sirven para indicar a una actividad, servicio o broadcast receiver qu
intents pueden tratar de forma implcita. Con ello, todo componente que desee ser avisado por
intenciones debe declarar filtros de intenciones.
La manera ms comn de declarar filtros de intenciones consiste en utilizar la etiqueta intent-
filteren e l manifiesto (AndroidManifest.xml) de su aplicacin.
En la creacin de un proyecto Android, la actividad principal del proyecto contiene filtros de
intenciones.
Estos dos filtros de intenciones significan, respectivamente, que la actividad:
Es la actividad principal de la aplicacin.
Pertenece a la categora Launcher, es decir, estar disponible desde el men principal de
inicio de aplicaciones de Android.
Tambin puede crear filtros de intenciones dinmicamente gracias a la clase IntentFilter.
b. pendingIntent
Un pendingIntent corresponde a la descripcin de un intent asociado a una accin. Se crea
mediante uno de los mtodos siguientes:
getActivity(Context, int, Intent, int): permite generar un pendingIntent que apunte a unaactividad.
getBroadcast(Context, int, Intent, int): permite generar un pendingIntent que apunte a un
Broadcast Receiver.
getService(Context, int, Intent, int): permite generar un pendingIntent que ejecute un
servicio.
Permite, a un mecanismo externo a su aplicacin (NotificationManager, AlarmManager, etc.), tener
los privilegios necesarios para desencadenar en un momento dado un intent en el interior de su
aplicacin.
El ejemplo ms comn es el pendingIntent que sirve para desencadenar una notificacin tras larecepcin de un mensaje.
-
5/23/2018 Curso de Android - Full Programacion
33/285
La clase Application
Cada aplicacin Android tiene una clase Application. Esta clase permanece instanciada a lo largo de
todo e l ciclo de vida de su aplicacin. Puede sobrecargar esta clase para:
Reaccionar ante un Broadcast Receiver.
Transferir objetos entre los componentes de una aplicacin.
Gestionar los recursos que utiliza su aplicacin.
Declarar constantes globales para su aplicacin.
Una vez se haya sobrescrito esta clase, debe declararla en su archivo de manifiesto para que se tome
en consideracin.
La clase Application se instanciar en el arranque de la aplicacin.
-
5/23/2018 Curso de Android - Full Programacion
34/285
Ciclo de vida de una actividad
Por defecto, cada aplicacin Android se ejecuta en un proceso separado. Android gestiona los
recursos disponibles en el dispositivo y puede, si fuera necesario, cerrar aplicaciones para liberar
recursos (excepto aplicaciones en ejecucin).
La eleccin de la aplicacin que se cerrar depende fuertemente del estado del proceso en el que se
encuentra. Si Android debe elegir entre dos aplicaciones que se encuentran en el mismo estado,
elegir la que se encuentre en este estado desde hace ms tiempo.
1. Estado de una actividad
Una actividad puede encontrarse en cuatro estados distintos:
En ejecucin: la actividad se encuentra en primer plano y recibe las interacciones del usuario.
Si el dispositivo necesita recursos, se matar la actividad que se encuentra en el fondo del
back stack.
Pausada: la actividad est visible pero el usuario no puede interactuar con ella (oculta por un
cuadro de dilogo, por ejemplo). La nica diferencia con el estado anterior es la no recepcin
de eventos de usuario.
Parada: la actividad ya no es visible pero sigue en ejecucin. Todos los datos relativos a su
ejecucin se conservan en memoria. Cuando una actividad pasa a estar parada, debe
guardar los datos importantes y detener todos los tratamientos en ejecucin.
Muerta: se ha matado la actividad, ya no est en ejecucin y desaparece de la back stack.Todos los datos presentes en cach que no se hayan guardado se pierden.
2. Back stack
Todas las actividades iniciadas se almacenan en una lista que, generalmente, se denomina back
stack. Cuando se inicia una actividad nueva, sta se aade en la cima de la back stack.
Si el usuario pulsa el botn atrs de su dispositivo, la actividad en curso se cierra y la que se
encontraba inmediatamente debajo en la back stack se abre.
3. Ciclo de vida
El ciclo de vida de una actividad es bastante complejo y su comprensin es indispensable en el
desarrollo para Android. El siguiente esquema resume este ciclo de vida:
-
5/23/2018 Curso de Android - Full Programacion
35/285
Cuando se inicia la actividad, se invoca al mtodo onCreate. En este mtodo, debe inicializar su
actividad, cargar su interfaz y arrancar sus servicios.
A esta llamada le sigue el mtodo onStart, que permite indicar el inicio efectivo de la aplicacin
(ahora ya es visible).
A continuacin, se invoca al mtodo onResume para ejecutar todos los tratamientos necesarios
para el funcionamiento de la actividad (thread, proceso, tratamiento), inicializar variables y listeners.
Estos tratamientos debern detenerse cuando se invoque al mtodo onPausey relanzarse, si fuera
necesario, cuando se produzca una futura llamada al mtodo onResume.
Despus de estas tres llamadas, la actividad se considera utilizable y puede recibir interacciones delos usuarios.
Si otra actividad pasa a primer plano, la actividad en ejecucin pasar a estar pausada. Justo antes
de la llamada al mtodo onPause, se invocar al mtodo onSaveInstanceState para permitirle
guardar los datos importantes de la actividad. Estos datos podrn aplicarse a futuras ejecuciones
-
5/23/2018 Curso de Android - Full Programacion
36/285
de la actividad con la llamada a l mtodo onRestoreInstanceState .
Por ejemplo, en una aplicacin de gestin de mensajes, el mtodo onSaveInstanceState podra
servir para guardar el borrador de un SMS que se estaba escribiendo en ese mismo momento. Esto
permitir al usuario volverse a encontrar el borrador a l volver a la aplicacin.
El mtodo onPause permite detener los tratamientos realizados (tratamiento no necesario si la
actividad no es visible) por la actividad (tratamiento, thread, proceso).
Si su actividad pasa a estar visible de nuevo, se realizar una llamada al mtodo onResume.
El paso de la actividad al estado parada tiene asociado una llamada al mtodo onStop. En este
mtodo hay que detener todos los tratamientos restantes.
Una vez parada, su actividad puede:
Volver a iniciarse: accin realizada por una llamada al mtodo onStartsiguiendo el ciclo de
vida normal de la actividad.
Terminar: se realiza con una llamada al mtodo onDestroy, en el que deber parar todos los
tratamientos restantes, cerrar todas las conexiones a la base de datos, todos los archivos
abiertos, etc. Puede provocar la llamada al mtodo onDestroyutilizando el mtodo finish.
Es posible sobrecargar todos los mtodos de l ciclo de vida de una actividad.
-
5/23/2018 Curso de Android - Full Programacion
37/285
Contexto de una aplicacin
El contexto representa e l estado actual de una aplicacin y la informacin relativa a su entorno. Sirve
para recuperar objetos enviados por otros elementos de su aplicacin.
Puede obtener el contexto de cuatro formas distintas:
getApplicationContext(): permite obtener el contexto de su aplicacin.
getContext(): permite obtener el contexto en e l que se ejecuta la vista actual.
getBaseContext(): permite obtener el contexto definido mediante el
mtodosetBaseContext().
this (slo cuando se encuentre en una clase que herede de forma directa o indirecta de la
claseContext).
La clase Activity extiende la clase Context.
-
5/23/2018 Curso de Android - Full Programacion
38/285
...
Manifiesto
El archivo AndroidManifest.xml, que se encuentra en la raz de todo proyecto Android, es lo ms
parecido a una descripcin completa de la aplicacin (componentes, actividades, servicios, permisos,
proveedores de contenido, etc.).
Cada componente que requiera una declaracin en el manifiesto se abordar en la seccin
dedicada a dicho componente o funcionalidad.
Cuando publica una aplicacin en el Market, ste ltimo se encarga de recorrer su archivo manifiesto
para recopilar el mximo de informacin sobre su aplicacin (nombre del package, icono, descripcin,
contenido, versin, etc.).
Vamos a describir las secciones generales e indispensables de un manifiesto. El comienzo de un archivo
de manifiesto es, con algunos detalles, casi idntico al de cualquier otra aplicacin.
Esta primera parte contiene:
La declaracin xmlns (obligatoria).
El package (identificador) de su aplicacin (elegido en la creacin de su proyecto).
El cdigo de la versin actual de su aplicacin. Este cdigo representa un valor entero que se
incrementar con cada nueva versin de su aplicacin.
El nombre de la versin (visible en el Market).
El contenido del manifiesto vara en funcin de la aplicacin:
Las permissions(vase la seccin Permissions (permisos) en este captulo).
Las instrumentations: proporcionan un framework de pruebas para una aplicacin.
uses-sdk: este nodo permite especificar las versiones mnima (minSDKVersion) y mxima
(maxSDKVersion) del SDK compatible con la aplicacin, as como la versin utilizada para el
desarrollo de la misma (targetSDKVersion).
uses-configuration: este atributo permite detallar las especificidades de navegacincompatibles con su aplicacin, tales como los teclados fsicos, trackball, lpiz, etc. Este nodo es
opcional.
uses-feature: este nodo permite indicar los elementos de hardware requeridos por la
aplicacin (audio, bluetooth, cmara, localizacin, NFC, etc.). Este nodo es opcional.
supports-screens: este atributo permite especificar las dimensiones de pantalla soportadas
por la aplicacin (smallScreens, normalScreens, largeScreens, xlargeScreens).
La aplicacin: define la estructura y el contenido de la aplicacin (actividad, servicio, etc.).
1. Instalacin de la aplicacin
Puede especificar las preferencias de instalacin en un medio (instalacin en el almacenamiento
interno o externo) gracias al atributo installLocation. Por defecto, la instalacin se realiza en el
almacenamiento interno.
-
5/23/2018 Curso de Android - Full Programacion
39/285
Si desea instalar la aplicacin en e l almacenamiento externo, este ltimo quedar inutilizable si
el almacenamiento externo se conecta a un ordenador, por ejemplo.
Algunas aplicaciones deben instalarse en el almacenamiento interno del dispositivo:
Las aplicaciones que tengan un widget o un fondo de pantalla animado.
Las aplicaciones que representan teclados, etc.
2. Descripcin de su aplicacin
En la seccin application del manifiesto tendr que describir todas las caractersticas especficas y
todos los componentes de su aplicacin:
Nombre de la aplicacin.
Icono de la aplicacin.
Tema utilizado por la aplicacin.
Los distintos componentes de la aplicacin (Actividad, Servicio, Proveedor de contenido,
Receptor de eventos) as como las caractersticas especficas de cada componente
(componente principal, presencia en el inicio de la aplicacin, uso de datos).
-
5/23/2018 Curso de Android - Full Programacion
40/285
-
5/23/2018 Curso de Android - Full Programacion
41/285
Etiqueta de
mi permission
Descripcin
de mi permission
nuevapermission:
Tambin debe detectar las violaciones de seguridad en el uso de permissionsque haya definido.
Si desea que el uso de un dato, actividad o servicio en particular de su aplicacin, requiera la
declaracin de una permission, puede indicarlo en su archivo de manifiesto, en cualquier parte donde
se exija la permissioncon el atributo android:permission.
Tomemos, por ejemplo, el caso de un servicio que obliga a declarar una permissiona la aplicacin que
desea utilizarlo:
En este ejemplo, cualquier aplicacin que desee utilizar el servicio "MiServicio" debe declarar,
obligatoriamente, la permission"MI_PERMISSION".
Si su permission involucra a un proveedor de contenido (content provider), puede distingir
la permissionde lectura de la permission de escritura
(android:readPermissiony android:writePermission).
Tambin puede comprobar el uso de su permission directamente en el cdigo de su servicio, por
ejemplo. Para ello, utilice el mtodo checkCallingPermission() que devolver, respectivamente,
PERMISSION_GARANTED, si la permissionse ha solicitado correctamente, o PERMISSION_DENIED, en
caso contrario.
Todos los errores de permissionaparecen en tiempo de ejecucin, y no en la compilacin.
-
5/23/2018 Curso de Android - Full Programacion
42/285
Creacin del proyecto
Crear un proyecto Android es sencillo.
Haga clic en File - New - Android Application Project. Si la opcin Android Application
Project no apareciera, haga clic en Other y, en la seccin Android, seleccione Android
Application Projecty haga clic en el botn Next.
Aparecer un formulario que le servir para crear su proyecto. Este formulario se compone de varias
pantallas.
La primera pantalla le permite especificar:
El nombre de la aplicacin.
El nombre del proyecto.
El identificador de la aplicacin (nombre del package).
La versin mnima de Android compatible con la aplicacin (Minimum Required SDK).
La versin mxima de Android con la que se ha probado la aplicacin (Target SDK).
La versin de Android utilizada para desarrollar la aplicacin (Compile With).
El tema bsico de la aplicacin (Theme).
Una vez se han introducido estos datos , haga clic en el botn Next. En esta pantalla podr:
Definir, si lo desea, un icono personalizado (Create custom launcher icon).
-
5/23/2018 Curso de Android - Full Programacion
43/285
Crear la actividad (Create activity).
Definir el comportamiento del proyecto (Aplicacin Android o Librera Android) mediante la
opcin Mark this project as a library.
Informar la ubicacin del proyecto y e l working set del proyecto.
Si ha seleccionado la opcin que permite crear un icono personalizado, se abrir la siguiente
pantalla:
-
5/23/2018 Curso de Android - Full Programacion
44/285
Dispone de varias opciones que le facilitan la creacin del icono de su aplicacin:
Crear el icono desde una imagen personalizada.
Crear el icono desde una imagen propuesta por el SDK Android.
Crear el icono desde texto.
Tambin puede especificar algunas propiedades del icono:
Su padding (margen interno),
Su posicin,
Su forma,
Su color de fondo,
Su color.
Puede saltarse este paso deseleccionando la opcin Create custom launcher icon (en el paso
anterior).
Una vez se ha creado el icono, haga clic en el botn Nextpara pasar a la panta lla que le permite
especificar si desea crear una actividad inicial para su aplicacin.
Si desea una actividad inicial, puede elegir entre una de estas opciones:
Actividad vaca.
-
5/23/2018 Curso de Android - Full Programacion
45/285
Actividad a pantalla completa.
Actividad maestro/detalle.
Elija la opcin Blank activity (actividad vaca) y haga clic en el botn Next. Obtendr una
pantalla que le permitir configurar las caractersticas especficas de su actividad.
Esta nueva pantalla le permite indicar el estado inicial de su actividad:
Nombre de la actividad (nombre del archivo).
Ttulo de la actividad.
Nombre de l archivo que sirve para crear la vista.
Nombre de la clase madre de la actividad.
Tipo de navegacin que se usar en la actividad (Fixed tabs + Swipe, Scrollable tabs + Swipe o
DropDown).
Para terminar la creacin de su proyecto, haga clic en el botn Finish. El proyecto aparecer en
la pestaa Package explorer.
-
5/23/2018 Curso de Android - Full Programacion
46/285
Arquitectura del proyecto
Desplegando el proyecto, descubrir la arquitectura de una aplicacin Android.
-
5/23/2018 Curso de Android - Full Programacion
47/285
Una aplicacin Android se compone de varias carpetas:
src: esta carpeta contiene los fuentes de su aplicacin (Actividades, Servicios, Cdigo de capa
de negocio, etc.).
gen: esta carpeta es e l resultado de la generacin de archivos presentes en la carpeta res(de
la voz inglesa Resources (Recursos)). El contenido de la carpeta Resources se precompila y se
genera en la carpeta gen para que pueda utilizarlo fcilmente en su cdigo fuente. Esta
carpeta tambin contiene el archivo BuildConfigque le permite gestionar la visualizacin del
log en modo depuracin y desarrollo, todo ello gracias a una constante definida en este
archivo.
assets: esta carpeta almacena los datos o archivos que utiliza en su aplicacin. Estos archivos
no son ni dependientes de la resolucin, ni del idioma del telfono y se conserva su formato
(no hay precompilacin). Los archivos almacenados en la carpeta assetsson de slo lectura.
bin: esta carpeta sirve para almacenar los binarios y los archivos de clase generados.
libs: contiene las distintas libreras usadas por la aplicacin.
res: esta carpeta sirve para almacenar todos los recursos que utilice en su aplicacin. Puede
tener recursos diferentes en funcin de la resolucin, de la orientacin o del idioma del
dispositivo. Los recursos se precompilan y se aaden al archivo R.java (vase el captulo
Creacin de interfaces sencillas - Recursos).
drawable-xxx: contiene todas las imgenes en las distintas resoluciones aceptadas.
layout-xxx: contiene todas las vistas (modos horizontal y vertical).
values-xxx: contiene todos los archivos que contienen datos o valores (strings, arrays,
colors, dimensions, styles, etc.).
menus: contiene las barras de acciones y mens de su aplicacin.
raw-xxx: contiene archivos no compilables (archivo de audio, de video, etc.).
AndroidManifest.xml: es el archivo de descripcin de su aplicacin.
proguard.cfg: permite definir el sistema de ofuscacin y de optimizacin de su cdigo utilizado
por ProGuard.
project.properties: contiene informacin sobre el proyecto (versin y libreras referenciadas).
-
5/23/2018 Curso de Android - Full Programacion
48/285
Explicaciones
A continuacin, se realizar un recorrido por todos losarchivos del proyecto para explicar su contenido.
1. Android Manifest
Para comenzar, abra el archivo Android Manifest (vase el captulo Principios de programacin -
Manifiesto). Este archivo es bastante bsico en este caso.
En este archivo:
El package (identificador) de su aplicacin (en este caso com.eni.android. helloandroid) se
define en el atributo packagede la etiqueta manifiesto.
La versin de la aplicacin se detalla con los atributos versionCode (nmero de versin)
yversionName(nombre de versin: visible en el Market) de la etiqueta manifiesto.
La versin mnima del SDK para poder utilizar la aplicacin se informa en el
atributominSdkVersionde la etiqueta uses-sdk, as como la versin del SDK utilizada para
desarrollar la aplicacin (atributotargetSDKVersion).
El icono y el nombre de su aplicacin se introducen con los atributos icon y label de la
etiqueta application as, como el tema utilizado por la aplicacin (vase el captulo
Personalizacin y gestin de eventos - Personalizacin).
La descripcin de la actividad principal (etiqueta activity) incluye:
El nombre de la clase que implementa Activity.
El ttulo de la actividad.
Los filtros de la actividad:
MAIN: indica que se trata de la actividad principal de la aplicacin.
LAUNCHER: indica que esta actividad est presente en el arranque de la
aplicacin.
-
5/23/2018 Curso de Android - Full Programacion
49/285
2. Resources (recursos)
Drawable
La carpeta drawablecontiene el icono de la aplicacin en cuatro resoluciones (ldpi = baja resolucin,
mdpi = reso lucin media, hdpi = alta reso lucin, xhdpi = reso lucin muy alta).
Layout
La aplicacin slo contiene un valor, que sirve para mostrar la e tiqueta "HelloAndroid".
Esta vista slo contiene un RelativeLayout, que sirve de contenedor para el campo de texto (vase el
captulo Creacin de interfaces sencillas - Layouts) cuyo contenido se declara en el archivo strings.xml
(vase el captulo Creacin de interfaces sencillas - Recursos). El RelativeLayout tiene los atributos
siguientes:
Un margen interno (padding) para el texto.
Este campo de texto tambin tiene los atributos s iguientes:
La anchura y la altura del elemento (vase el captulo Creacin de interfaces sencillas -
Principios).
Values
Puede observar las cinco carpetas values:
values: carpeta utilizada para almacenar diferentes valores tiles en una aplicacin (utilizada
en la mayora de los casos).
values-sw600dp: todos los archivos contenidos en esta carpeta reemplazan los archivos
values por defecto cuando el dispositivo tiene una pantalla grande (tablet de 7 pulgadas, por
ejemplo).
values-sw720dp-land: todos los archivos contenidos en esta carpeta reemplazan los
archivos values por defecto cuando e l dispos itivo tiene una pantalla muy grande (tablet de 10
pulgadas en horizontal, por ejemplo).
values-v11: todos los archivos contenidos en esta carpeta reemplazan los archivos values
por defecto cuando el dispositivo tiene la versin 3.x de Android (Honeycomb).
values-v14: todos los archivos contenidos en esta carpeta reemplazan los archivos valuespor defecto cuando el dispositivo tiene una versin 4.x de Android (Ice Cream Sandwich o
JellyBean).
La carpeta valuescontiene los archivos siguientes (vase el captulo Creacin de interfaces sencillas -
Recursos):
-
5/23/2018 Curso de Android - Full Programacion
50/285
strings.xml
HelloAndroid
Settings
Hello world!
Este archivo contiene cuatro cadenas de caracteres:
El nombre de la aplicacin.
El mensaje "Hello world!", que se mostrar.
La cadena de caracteres utilizada en la barra de accin/men.
El ttulo de la actividad principal.
dimens.xml
16dp
16dp
Contiene las distintas dimensiones utilizadas en la aplicacin (los distintos mrgenes internos
utilizados).
Se sobrescriben con el archivo dimens.xmlque est ubicado en las carpetas values-
sw600dpy values-sw720dp-landpara especificar nuevas dimensiones para pantallas ms
grandes.
Contenido del archivo dimens.xmlpresente en la carpeta values-sw600dp:
Contenido del archivo dimens.xmlpresente en la carpeta values-sw720dp-land:
128dp
styles.xml
-
5/23/2018 Curso de Android - Full Programacion
51/285
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
Base application theme, dependent on API level. This theme is
replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
Contiene el tema utilizado por la aplicacin (vase el captulo Personalizacin y gestin de
eventos - Personalizacin).
Este tema ser distinto en aquellos dispositivos que dispongan de las API 11 (Honeycomb) y14 (Ice Cream Sandwich o posterior). Todo ello para utilizar el tema Holo de Android,
disponible solamente para las versiones 3.x y 4.x.
Contenido del archivo styles.xmlpresente en la carpeta values-v11:
Contenido del archivo styles.xmlpresente en la carpeta values-v14:
3. Archivo generado
Esta carpeta contiene el archivo R.java. Se genera automticamente con la precompilacin de losarchivos ubicados en la carpeta de recursos.
-
5/23/2018 Curso de Android - Full Programacion
52/285
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.eni.android.helloandroid;
public final class R {
public static final class attr {
}
public static final class dimen {
/** Default screen margins, per the Android Design guidelines.
Customize dimensions originally defined in res/values/dimens.xml (such as
screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
*/
public static final int activity_horizontal_margin=0x7f040000;
public static final int activity_vertical_margin=0x7f040001;
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}public static final class id {
public static final int action_settings=0x7f080000;
}
public static final class layout {
public static final int activity_hello_android=0x7f030000;
public static final int activity_main=0x7f030001;
}
public static final class menu {
public static final int hello_android=0x7f070000;
public static final int main=0x7f070001;
}
public static final class string {
public static final int action_settings=0x7f050001;
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050002;
}
public static final class style {
/**
Base application theme, dependent on API level. This theme is
replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related tobackward-compatibility can go here.
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
API 11 theme customizations can go here.
Base application theme for API 14+. This theme completely replaces
AppBaseTheme from BOTH res/values/styles.xml and
res/values-v11/styles.xml on API 14+ devices.
API 14 theme customizations can go here.
*/
public static final int AppBaseTheme=0x7f060000;
/** Application theme.
All customizations that are NOT specific to a particular API-level can go
here.
-
5/23/2018 Curso de Android - Full Programacion
53/285
*/
public static final int AppTheme=0x7f060001;
}
}
/** Automatically generated file. DO NOT MODIFY */packagecom.eni.android.helloandroid;
public final classBuildConfig {
public final static boolean DEBUG= true;
}
package com.eni.android.helloandroid;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
public class HelloAndroidActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_android);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.hello_android, menu);
return true;
}
}
No modifique este archivo ya que sus modificaciones se perdern en la prxima compilacin.
Puede observar que el archivo contiene referencias a todos los elementos presentes en la
carpeta res(drawable, layout y strings).
Desde la nueva versin de ADT, la carpeta gentambin contiene el archivo BuildConfig.java.
Este archivo le permite gestionar si se encuentra en modo desarrollo o produccin en su aplicacin
mediante la variable DEBUG.
El estado de esta variable se modifica automticamente cuando genera su apk para que los logs no
se muestren durante la ejecucin de la aplicacin en el dispositivo (vase el captulo Depuracin y
gestin de errores - Logs).
4. Archivo fuente
Disponemos de un archivo "HelloAndroidActivity" que contiene la implementacin de nuestra vista
(vase el captulo Creacin de interfaces sencillas - Principios).
Nuestra clase debe heredar de Activity y sobrecargar el mtodo onCreate en el que se define el
contenido de la vista gracias al mtodosetContentView. La vista se obtiene gracias a la clase R.java,
ya que se declara estticamente en esta clase.
Tambin contiene la creacin de un men utilizado en la aplicacin (vase el captulo Creacin de
interfaces sencillas - Mens).
-
5/23/2018 Curso de Android - Full Programacion
54/285
Resultado
A continuacin, ejecute el proyecto en el dispositivo objetivo (men Runen Eclipse). El uso del
plugin ADT permite instalar y ejecutar una aplicacin en el dispositivo simplificando los siguientes
pasos:
Compilacin y conversin del proyecto Android en un archivo ejecutable Android (.dex).
Enpaquetar los archivos generados as como los recursos en un archivo apk.
Arrancar el emulador.
Instalacin de la aplicacin en el dispositivo objetivo.
Inicio de la aplicacin.
Con ello, obtendremos el siguiente resultado:
-
5/23/2018 Curso de Android - Full Programacion
55/285
Principios
En el desarrollo de aplicaciones Android se encontrar con la necesidad de depurar cdigo, corregir
errores y realizar pruebas. El SDK Android incluye varias herramientas que facilitan estos pasos
indispensables en la creacin de aplicaciones Android.
-
5/23/2018 Curso de Android - Full Programacion
56/285
DDMS (Dalvik Debug Monitor Server)
El DDMS es la herramienta de depuracin incluida en el SDK Android, se compone de varios mdulos:
Devices(Dispos itivos): este mdulo permite:
Ver la lista de dispositivos conectados.
Ver la lista de procesos en ejecucin en un dispositivo seleccionado.
Realizar capturas de pantalla de un dispositivo.
Activar la depuracin en un proceso determinado.
Parar un proceso...
Emulator Control(Control del emulador) permite:
Simular llamadas.
Simular mensajes.
Simular una localizacin...
Hay ms pestaas que permiten:
Obtener la lista de procesos en ejecucin,
Ver el logcat,
Supervisar las asignaciones de memoria,
Obtener estadsticas sobre el uso de la red,
-
5/23/2018 Curso de Android - Full Programacion
57/285
Explorar archivos
Puede acceder al DDMS de dos maneras distintas:
Desde Eclipse: haga clic en Window - Open Perspective - Other y, a continuacin,
seleccioneDDMS.
Desde la carpeta toolsdel SDK Android.
-
5/23/2018 Curso de Android - Full Programacion
58/285
Log.e(String tag, String message);
./adb logcat
Logs
El sistema de logs es imprescindible en el desarrollo para Android. Es til para mostrar mensajes que
tienen diferentes niveles de importancia. Estos mensajes se pueden visualizar gracias a Logcat.
1. Logcat
Logcat es la interfaz que permite visualizar todos los mensajes que generan las distintas aplicaciones
contenidas en el dispositivo.
Si la pestaa LogCatno aparece en Eclipse, puede mostrarla haciendo clic en Window - Show view -
Logcat.
Con esta herramienta podr:
Ver los mensajes de log generados por el dispositivo seleccionado.
Filtrar los mensajes que se muestran por aplicacin, identificador o etiqueta de una
aplicacin.
Buscar un mensaje.
Filtrar los mensajes por nivel (verbose, debug, error, etc.).
Guardar los logs se leccionados en un archivo.
Puede acceder a los logs por lnea de comandos mediante la herramienta adb:
2. Utilizar los logs
Puede mostrar un mensaje de log en cualquier parte de la aplicacin gracias a la clase Log. Hay un
mtodo disponible para cada nivel de importancia del mensaje.
d (Debug - Depuracin): sirve para mostrar un mensaje de depuracin.
e (Error): sirve para mostrar un mensaje de error.
i (Info - Informacin):sirve para mostrar un mensaje de informacin.
v (Verbose): sirve para mostrar un mensaje verbose.
w (Warning): sirve para mostrar una advertencia.
wtf (What a Terrible Failure): sirve para mostrar un error que nunca debera ocurrir.
A continuacin se muestra el prototipo para un mensaje de error:
o
-
5/23/2018 Curso de Android - Full Programacion
59/285
Log.e(String tag, String message, Throwable tr);
private static final String TAG = "MiActivity";
...Log.e(TAG, "Mi mensaje de error");
if(BuildConfig.DEBUG)
Log.v("HelloAndroidActivity", "Log de mi aplicacin");
Puede incluir una excepcin en los logs mediante e l tercer parmetro del mtodo de Log.
A continuacin se muestra un ejemplo de visualizacin de un mensaje de error:
En general, el log mostrado tendr como TAG el nombre de la actividad en la que se encuentra.
Esto nos permitir localizar ms fcilmente el origen del mensaje.
Tiene la posibilidad de utilizar el flag debugdisponible en el archivo BuildConfigpara mostrar los logs
nicamente durante la fase de desarrollo y de test. En la generacin del apk firmado, se eliminarn
los logs del cdigo generado. Esta buena prctica permite limitar las interacciones entre una
aplicacin y el dispositivo.
-
5/23/2018 Curso de Android - Full Programacion
60/285
Android Lint
Esta herramienta le permite especificar una lista de reglas que se aplicarn a sus proyectos Android
(recursos no internacionalizados, utilizacin de APIs no soportada en todas las versiones de Android,
uso de dimensiones en px, etc.).
Puede configurar la lista de reglas que se tendrn en consideracin en la pantalla de
configuracin de Eclipse (apartado Lint Error Checkingen la seccin Androidde la configuracin
de Eclipse).
Esta herramienta es muy importante en la fase de desarrollo porque permite comprobar que sus
implementaciones siguen las buenas prcticas de desarrollo Android.
Los errores Lint se muestran en la ventana Lint Warnings, accesible haciendo clic en Window - Show
View - Other - Android - Lint Warnings.
-
5/23/2018 Curso de Android - Full Programacion
61/285
./adb devices
016B7DFE0101001A device
emulator-5554 online
./adb shell
adb -s emulator-5554 shell
adb -s emulator-5556 install miAplicacin.apk
adb -s emulator-5556 uninstall com.eni.android.application
aapt d badgind miarchivo.apk
ADB (Android Debug Bridge)
ADB es una herramienta muy til e importante en el desarrollo para Android. En esta seccin,
descubrir a lgunas funcionalidades prcticas de adb:
Listar dispositivos
Puede listar los dispositivos Android detectados por el SDK Android por lnea de comandos mediante e l
siguiente comando:
Si encuentra problemas con el uso de la herramienta adb, puede reiniciarla con los comandos
adb kill-server y adb start-server.
Conectarse a un dispositivo
Conectarse a un dispositivo detectado es muy sencillo, puede utilizar el comando siguiente:
Si tiene varios dispositivos conectados, debe especificar el dispositivo deseado mediante el
argumento -s.
Una vez el comando se ha ejecutado con xito, est conectado al shell del dispositivo seleccionado y
tiene la posibilidad de ejecutar los comandos que desee (ls, cd, etc.).
Instalar una aplicacin
Puede instalar directamente una aplicacin en e l dispos itivo mediante el comando.
Tambin puede desinstalar una aplicacin.
La desinstalacin se realiza con el nombre del paquete de la aplicacin y no con el nombre del
archivo apk.
La obtencin del nombre del package (as como otros datos) de una aplicacin a partir de un apk se
realiza con la herramienta aapt(presente en la carpeta platform-toolsdel SDK Android):
Copiar archivos
Puede copiar archivos/carpetas desde un dispositivo a un PC mediante el comando pull.
-
5/23/2018 Curso de Android - Full Programacion
62/285
adb pull /sdcard/miArchivo miArchivo
adb push miArchivo /sdcard/miArchivo
./adb help
Tambin puede copiar un archivo desde e l PC a un dispositivo mediante el comando push.
Estos comandos son slo un pequeo aperitivo de las posibilidades que ofrece adb, puede
conocer el resto de funcionalidades mediante el comando:
-
5/23/2018 Curso de Android - Full Programacion
63/285
Depuracin paso a paso
Para depurar su aplicacin y comprender el origen de los errores, podr utilizar puntos de ruptura
(Breakpoints). Estos breakpoints le permitirn ver la ejecucin de su aplicacin paso a paso,
comprender el origen de los errores y ver la pila de llamadas y el estado de sus variables durante la
ejecucin.
Debe ejecutar el proyecto en modo depuracin (haga clic con el botn derecho sobre el proyecto
deseado y seleccione Debug As - Android Application).
No es posible ubicar breakpoints en los recursos de una aplicacin.
-
5/23/2018 Curso de Android - Full Programacion
64/285
Interaccin con el emulador
Puede interactuar con el emulador para simular el uso del dispositivo. Esta funcionalidad es posible
gracias al Emulator Control(Control del emulador).
Para mostrar el Emulator Control, haga clic en Window - Show View - Othery, a continuacin,
seleccione Emulator Controlo vaya s implemente a la perspectiva DDMS.
1. Simular llamadas
Para simular una llamada, utilice la seccin Telephony Actionsdel Emulator Control.
Introduzca un nmero de telfono en el campo Incoming number (Nmero origen) y, a
continuacin, pulse e l botn Call(Llamar).
2. Simular mensajes
Para simular la recepcin de un mensaje hay que utilizar la seccin Telephony Actionscomo se ha
explicado anteriormente.
Una vez se ha introducido el nmero, active la seleccin de SMSe introduzca el contenido del
mensaje y, a continuacin, pulse e l botn Send(Enviar).
-
5/23/2018 Curso de Android - Full Programacion
65/285
3. Simular una posicin GPS
Para simular una posicin GPS y, por lo tanto, una localizacin del usuario, utilice la seccinLocations
Controls(Controles de localizacin).
Introduzca una latitud y una longitud y, a continuacin, pulse el botn Send para enviar la
posicin al te lfono (vase el captulo Google Maps y geolocalizacin - Localizacin).
4. Realizar capturas de pantalla
La vista Devices(Dispositivos) le permite, entre otras acciones, realizar capturas de pantalla.
Para mostrar esta vista, haga clic en Window - Show view - Other, a continuacin
seleccioneDevices(Dispos itivos) o simplemente acceda a la perspectiva DDMS.
Seleccione un dispositivo y haga clic en el pequeo icono que representa una cmara de fotos.
-
5/23/2018 Curso de Android - Full Programacion
66/285
Pruebas en el telfono
Si tiene un telfono Android, puede probar sus aplicaciones en l, adems de las pruebas realizadas
con los distintos emuladores.
1. Utilizar su telfono
Para utilizar su telfono, debe realizar algunas operaciones ms o menos largas, en funcin del
dispositivo y de su OS.
Si est en Linux/Mac, no necesita realizar ninguna operacin para hacer que Android reconozca su
telfono.
En Windows:
Si dispone de un telfono Google (Nexus One, Nexus S y Galaxy Nexus), los drivers de uso de
sus telfonos estn incluidos en el SDK Android (vase el captulo El entorno de desarrollo -
Instalacin del entorno Java).
Si dispone de un telfono de otra marca (HTC, Samsung, etc.), deber descargara los driversdisponibles de l sitio del fabricante.
Para saber si puede utilizar su telfono para probar sus aplicaciones (configuracin realizada
con xito), inicie la vista DDMS de Eclipse y compruebe, en la seccin Devices(Dispositivos), si
su telfono aparece en la lista de dispositivos.
2. Opciones de desarrollo
Todo dispositivo Android (versin 4.0 como mnimo) tiene opciones para desarrolladores. Estas
opciones estn disponibles en la categora Opciones de desarrollador, en los ajustes de su
telfono.
No olvide activar la Depuracin USBpara utilizar su dispositivo a travs de Eclipse.
A continuacin se muestran las opciones ms tiles:
Depuracin USB: activa el modo de depuracin cuando el telfono est conectado al PC.
Permitir ubicaciones falsas: permite la simulacin de posiciones ficticias y, por lo tanto, simular una
posicin distinta a la del dipositivo.
Modo estricto: esta opcin es muy util, ya que habilita que la pantalla de su dispositivo destelle en
rojo cuando una operacin larga no se realice en un thread distinto al del UI (vase el captulo
Tratamiento en tareas en segundo plano).
Mostrar uso de CPU: muestra un mensaje por pantalla que indica la cantidad de CPU utilizada.
No mantener actividades: permite eliminar inmediatamente las actividades abandonadas y slo
conservar una actividad a la vez. Esta funcionalidad le permite probar al lmite su aplicacin y su
comportamiento cuando se finaliza una actividad anterior. Esta funcionalidad permite, entre otros,
-
5/23/2018 Curso de Android - Full Programacion
67/285
comprobar cmo se guarda el estado de sus actividades (onSaveInstancey onRestoreInstance).
Limitar procesos en segundo plano: permite definir el nmero mximo de procesos en segundo
plano, es decir, el nmero de aplicaciones que pueden conservarse en segundo plano.
-
5/23/2018 Curso de Android - Full Programacion
68/285
public class HelloAndroidActivityTestextends
ActivityInstrumentationTestCase2
publicHelloAndroidActivityTest() {
super(HelloAndroidActivity.class);
}
@Override
Pruebas unitarias
La creacin de pruebas unitarias es un e lemento esencial en cada proyecto Android. Para ello, Android
proporciona un sistema de pruebas unitarias bastante completo que le permitir probar sus
aplicaciones.
Para empezar, cree un proyecto de pruebas que se aplique al proyecto HelloAndroid (creado en el
captulo Mi primera aplicacin: HelloAndroid) para probar la exactitud de la cadena de caracteres
mostrada.
Para crear el proyecto de pruebas, haga clic en File - New - Other y, a continuacin,
seleccioneAndroid Test Project.
La primera pantalla permite introducir el nombre del proyecto (por convenio, el nombre del proyecto de
pruebas se corresponde con el nombre del proyecto concatenado con la palabra Test).
A continuacin, haga clic en Next para seleccionar el proyecto objeto de las pruebas (en este
caso Cap4_HelloAndroid). Haga clic, a continuacin, en Next y seleccione la versin 4.0.3 de
Android. Para finalizar, haga clic en Finish.
El siguiente paso consiste en crear una clase de pruebas. Esta clase puede sobrecargar varios tipos de
clases en funcin del componente que desee probar.
Con el objetivo de probar una actividad, hay que sobrecargar la
claseActivityInstrumentationTestCase2 . Esta clase debe parametrizarse con la clase correspondiente
a la actividad que se va a probar.
Con lo que tendremos:
A continuacin, deber sobrecargar los siguientes dos mtodos:
Un constructor para la clase de pruebas.
El mtodo setUp(), que permite inicializar el entorno de pruebas (por ejemplo, inicializar el
juego de pruebas que se usar en el test).
Y crear los mtodos que implementan las distintas pruebas que deseamos realizar:
El mtodo que permite probar las precondiciones de la prueba (por ejemplo, una inicializacin
correcta de la vista).
Los mtodos que ejecutan sus pruebas.
El constructor es muy sencillo y permite inicializar la clase usando la clase madre. Debe especificar laclase que se quiere probar.
El mtodo setUppermite inicializar el entorno utilizado para las pruebas. En este ejemplo, hay que
inicializar:
La actividad (Activity).
El campo de texto (TextView).
La cadena de texto utilizada como referencia.
-
5/23/2018 Curso de Android - Full Programacion
69/285
protected voidsetUp() throwsException {
super.setUp();
myActivity = this.getActivity();
myView = (TextView)
myActivity.findViewById(com.eni.android.helloandroid.R.id.helloTxt);
expectedStr =
myActivity.getResources().getString(com.eni.android.helloandroid.R.
string.hello_world);
}
public voidtestPreconditions() {
assertNotNull(myActivity);assertNotNull(myView);
assertNotNull(expectedStr);
}
public voidtestTexto() {
assertEquals(expectedStr, (String) myView.getText());
}
Puede observar que los recursos utilizados se corresponden con los recursos del proyecto que
se est probando.
Debe crear un mtodo que permita comprobar las precondiciones de las pruebas. Estas precondiciones,
generalmente, corresponden a la cadena de caracteres de referencia.
Con lo que tenemos:
En este ejemplo se comprueba que las distintas variables tiles para el test no son iguales a null
(inicializacin realizada con xito).
Para terminar, hay que crear el mtodo que permite realizar la prueba. Esta prueba consiste en
comprobar que el campo de texto es igual a la cadena de caracteres esperada.
Una vez creada la clase , haga clic con el botn derecho del ratn sobre el proyecto de pruebas. A
continuacin, seleccione Run As - Android JUnit Test. Se abrir una ventana automticamente
para mostrar el resultado de los tests. Obtendremos:
-
5/23/2018 Curso de Android - Full Programacion
70/285
-
5/23/2018 Curso de Android - Full Programacion
71/285
adb shell monkey [opciones]
adb shell monkey -p com.eni.android.actionbar -v 500
adb shell monkey --help
Pruebas de interfaces
Puede probar las interfaces de una aplicacin, as como sus comportamientos, mediante varias
herramientas que presentamos en esta seccin.
1. Monkey
Monkey es una herramienta incluida en el SDK Android. Permite probar una aplicacin mediante
eventos aleatorios. El objetivo es realizar una prueba de estrs que s imule acciones de usuario.
Esta herramienta, que se puede usar por lnea de comandos a travs de la herramienta adb, se
encuentra en la carpeta platform-toolsde l SDK Android.
Monkeyincluye un gran nmero de opciones:
Nmero de eventos que se s imularn.
Tipo y frecuencia de los eventos que se probarn.
Posibilidad de depurar.
Detendr las tareas descritas si:
La lista de tareas ha finalizado.
La aplicacin produce un error (la herramienta mostrar los errores encontrados).
La aplicacin deja de responder (la herramienta mostrar los errores encontrados).
A continuacin se muestra la sintaxis bsica de Monkey:
Debe especificar el identificador del paquete correspondiente a la aplicacin que se desea
probar.
A continuacin se muestra un ejemplo de uso bsico de Monkey, para producir 500 eventos aleatorios
en una aplicacin instalada en un dispositivo determinado.
Puede especificar el tipo de elemento que desea ejecutar mediante las distintas opciones que se
pueden consultar en la pgina de ayuda del comando.
2. Robotium
Robotiumes un framework de test parecido a Selenium. Permite automatizar las pruebas de interfaz
de Android.
Gracias a este framework, puede crear pruebas automatizadas y robustas para sus actividades. Para
ello, simplemente hay que incluir el archivo jar de la librera disponible en el sitio web oficial de
Robotium: http://code.google.com/p/robotium/
Tambin permite la creacin de pruebas de interfaz con un mnimo de conocimiento de la aplicacin
que se desea probar.
http://code.google.com/p/robotium/ -
5/23/2018 Curso de Android - Full Programacion
72/285
android:id="@+id/nombre_identificador"
R.id.nombre_identificador
@id/nombre_identificador
Principios
La creacin de una interfaz en Android puede realizarse de dos formas:
Creacin esttica: se realiza en XML.
Creacin dinmica: se realiza en Java.
Ambos mtodos se pueden combinar para crear interfaces ms ricas (vase el captulo Creacin
de interfaces avanzadas - Interfaces dinmicas).
Una interfaz se compone de:
Uno o varios archivos XML: representan la parte esttica de una interfaz. Est formada por
los distintos elementos (Botn, Texto, Campo de edicin, etc.).
Un archivo JAVA (Actividad): representa la parte dinmica de una interfaz, las interacciones y
tratamientos que hay que realizar, etc.
La clase que representa la base de todos los elementos de u
top related