curso de android - full programacion

285

Upload: kevin-sosa

Post on 13-Oct-2015

56 views

Category:

Documents


2 download

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