ACP Guide asd

download ACP Guide asd

of 205

description

asdqwe

Transcript of ACP Guide asd

  • Gua de Android Certified Professional

    1

    1. Introduccin. 1.1. Historia. 1.2. Qu es Android? 1.3. Qu necesito para programar en Android?

    2. Arquitectura del sistema operativo 2.1. Arquitectura general 2.2. La mquina virtual de Android 2.3. Procesos en Android

    3. Componentes de una aplicacin 3.1. Actividades (Activities)

    3.1.1. Callbacks de una Actividad 3.2. Intenciones (Intents)

    3.2.1. Tipos de Intents 3.2.2. Intent Filter

    3.3. Proveedores de contenido (Content Provider) 3.4. Servicios (Services) 3.5. Receptores de radiodifusin (Broadcast Receiber)

    4. Entorno de desarrollo 4.1. Instalacin de Android Studio

    4.1.1. Requisitos del sistema 4.2. Instalacin de plataformas 4.3. Android Virtual Device (AVD) Manager 4.4. Comandos para AVD

    5. Fundamentos de una aplicacin. 5.1. Creacin y estructura de un proyecto Android

    5.1.1. Estructura de un proyecto 5.2. Trabajando con el archivo AndroidManifest.xml 5.3. Trabajando con el archivo Build.gradle

    5.3.1. Archivo Proyect Build 5.3.2. Archivo Module Build

    6. Creacin y manejo de Actividades. 6.1. Uso de recursos en una aplicacin 6.2. Seguridad y permisos 6.3. Uso de los mensajes Log

    7. Interfaz de usuario y controles 7.1. Unidades y layout 7.2. Objetos Widgets 7.3. Uso de ListView

    7.3.1. Listas simples 7.3.2. Listas personalizadas

    7.4. Uso de TabLayout 8. Temas, estilos y elementos grficos

    8.1. Creacin y uso de estilos 8.2. Creacin de iconos y comprensin de tamaos 8.3. Uso de la herramienta draw9patch

  • Gua de Android Certified Professional

    2

    8.4. Comprensin de tamao de pantalla y densidad 8.4.1. Un poco ms sobre DP

    9. Animaciones y grficos 9.1. Animacin cuadro a cuadro (Frame animation) 9.2. Animacin sincronizada (Tween animation). 9.3. Trabajar con grficos 2D.

    10. Mens 10.1. Men de opciones 10.2. Men contextual 10.3. Men popup

    11. Dilogos y notificaciones. 11.1. Dilogos

    11.1.1. Crear dilogos de alerta. 11.1.2. Crear dilogos personalizados 11.1.3. Crear dilogos de progreso

    11.2. Notificaciones. 11.3. Notificaciones Toast

    11.3.1. Toast simple 11.3.2. Toast personalizado

    12. Multimedia. 12.1. Reproduccin de audio con MediaPlayer 12.2. Reproduccin de video con MediaPlayer 12.3. Reproduccin de video con VideoView 12.4. Acceso a la cmara

    13. Persistencia y almacenamiento de datos 13.1. SharedPreferences 13.2. PreferencesActivity 13.3. Sistema de archivos interno y externo

    13.3.1. Almacenamiento interno 13.3.2. Almacenamiento externo

    13.4. Base de datos en SQLite 14. Geolocalizacin y mapas

    14.1. Geolocalizacin 14.2. Criteria

    15. Profundizando en la interfaz de usuario 15.1. Fragmentos

    16. Consumo de servicios web 16.1. SOAP 16.2. REST 16.3. JSON

    17. Multitasking 17.1. Loaders 17.2. AsyncTask

    18. Integracin con redes sociales 18.1. Facebook

  • Gua de Android Certified Professional

    3

    18.2. Twitter 19. Conectividad

    19.1. Http 19.2. Wifi 19.3. Bluetooth

    20. Realidad aumentada 21. Tpicos avanzados

    21.1. Servicios 21.1.1. Servicio iniciado 21.1.2. Servicio vinculado

    21.2. Content Provider 22. Publicacin de una aplicacin

    22.1. Preparacin de la aplicacin 22.2. Firma y creacin del archivo APK 22.3. Publicacin en Google Play 22.4. Control de versiones 22.5. Monetizacin de una aplicacin

  • Gua de Android Certified Professional

    4

    1. Introduccin

    1.1. Historia Breve historia de los inicios del sistema operativo Android, los creadores, el primer dispositivo mvil que se bas en Android y alguno de los principales hitos en su historia. En el ao 2003, cuatro expertos en tecnologa, Andy Rubin, Rich Miner, Nick Sears y Chris White, se unieron para crear la empresa Android Inc., esta empresa fue ubicada en Palo Alto California. Los cuatro trabajaron para crear un sistema operativo para dispositivos mviles que pudiera ser consiente tanto de la ubicacin de un usuario y permitiera ser configurado en base a las preferencias de este. En Agosto de 2005, Google compro Android Inc., aunque el precio de la compra nunca ha sido revelado, se estima que ronda los 50 millones de dlares. Andy Rubin, uno de los creadores de Android, trabaj de 2005 a 2013 como vicepresidente de ingeniera de Google. El 13 de Marzo de 2013, Rubin anuncia en su blog personal que se retira de Google para dedicarse a otros proyectos externos, ocupando su lugar Sundar Pichai. El 5 de Noviembre de 2007 Google dio a conocer la Open Handset Alliance (OHA), una agrupacin de fabricantes de tecnologa que trabajan en conjunto para crear estndares abiertos para dispositivos mviles. Las empresas de la coleccin incluan proveedores de servicios inalmbricos de telecomunicaciones, fabricantes de telfonos mviles y fabricantes de chipsets. Con este anuncio, Google dejaba en claro que sera diferente a otros sistemas operativos mviles, ya que no se limitara simplemente a un dispositivo o fabricantes. En octubre de 2008, fue lanzado al mercado el primer dispositivo inteligente con Android, el HTC Dream.

  • Gua de Android Certified Professional

    5

    Los inicios de Android fueron un poco lentos, ya que primero fue lanzado el sistema operativo (Octubre de 2008) y posteriormente el primer dispositivo mvil, el HTC Dream, tambin conocido como T-Mobile G1 (2010). Esto no ha sido problema para que el sistema operativo tenga ganados muchos adeptos y ha demostrado una velocidad de madurez importante debido a los diferentes fabricantes de hardware, que han adaptado interesantes piezas para acompaar las diferentes funcionalidades del sistema operativo.

    1.2. Qu es Android? Caractersticas principales de Android, se describen a grandes rasgos como est formado el sistema operativo y porqu utiliza Java como lenguaje de programacin. Android es una pila de software pensada inicialmente para telfonos mviles (smartphones) que incluye un sistema operativo, middleware y una capa aplicaciones para que el telfono pueda realizar funciones ms all de los dispositivos que se usaban antao. Dejando un poco de lado los tecnicismos, Android es otra de las opciones de interfaces y caractersticas que podemos encontrar en telfonos mviles; as como podemos identificar aspectos particulares de un Nokia cuyo sistema operativo es Windows Phone, o un iPhone con iOS o incluso los Blackberry, tambin existen cosas muy especficas en los telfonos que funcionan con Android.

  • Gua de Android Certified Professional

    6

    En trminos tcnicos, Android es un sistema operativo basado en el kernel de Linux, por esa razn tiene inmersas las caractersticas de ser libre, gratuito y multiplataforma. Cualquier desarrollador puede crear aplicaciones para Android sin la necesidad de pagar membresas anuales para obtener el kit de desarrollo (SDK).

    Android utiliza una variacin del lenguaje de programacin Java (Java ME). Si has desarrollado en Java, seguramente conocers lo que es trabajar con una mquina virtual que sirve para interpretar todo ese cdigo que genera nuestro programa (bytecode) y pueda ejecutarse. Pues bien, Android, tiene una adaptacin de esta mquina virtual y se llama ART. Distinta de la virtual machine por default de Java, ART es una excelente versin que optimiza muchas cosas en la plataforma y mucho de la rapidez de Android y de algunas aplicaciones se debe precisamente a esto.

    1.3. Qu necesito para programar en Android? En este tema se describen las principales herramientas que se utilizarn a lo largo del curso, as como los recursos hardware y los conocimientos tericos para poder desarrollar aplicaciones en Android.

    Herramientas de software.

    Sistema operativo. Una computadora que corra con Windows, Linux o Mac OS. En Windows y en Linux no importa la arquitectura (32 bits o 64 bits). Java. Se recomienda la ltima versin de Java disponible, puede descargarse desde la siguiente pgina. http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

    Kit de desarrollo. La ltima versin del SDK de Android, puede descargarse de la siguiente pgina. https://developer.android.com/intl/es/sdk/index.html IDE. Android ha puesto a disposicin de los desarrolladores su propio IDE, Android Studio. Este entorno de desarrollo ya incluye la ltima versin del SDK y puede ser descargado de la siguiente pgina. https://developer.android.com/intl/es/sdk/index.html

  • Gua de Android Certified Professional

    7

    Conocimientos tcnicos.

    Programacin orientada a objetos (POO). Si se ha programado en algn lenguaje que se base en este paradigma (PHP, Python, Java, .NET, C o C++, etc.) no debera implicar mayor problema empezar a desarrollar aplicaciones para Android. Conocimientos Java. Si se ha programado en Java, la migracin a Android ser mucho ms sencilla ya que las aplicaciones de Android se crean en este lenguaje de programacin. Manejo de un IDE de desarrollo. Cualquiera que sea el lenguaje en el que se tenga un poco de experiencia programando seguramente se ha hecho uso de algn IDE (entorno de desarrollo integrado). Esto te ser til en el curso.

    Herramientas hardware.

    Equipo Android. Uno de los puntos importantes que se recomienda, es tener es un telfono que corra con Android. Esto es porque de esta manera se tendr una autntica forma de probar cmo es que corren las aplicaciones en un ambiente real, adems de que existen algunos ejemplos prcticos que por sus caractersticas es altamente recomendable ejecutarlos en un dispositivo fsico.

  • Gua de Android Certified Professional

    8

    2. Arquitectura del sistema operativo.

    2.1. Arquitectura general Descripcin de la arquitectura general del sistema operativo, as como las principales caractersticas y funciones de cada nivel. El sistema Android es una pila de software para dispositivos mviles el cual se encuentra compuesto por el sistema operativo, un middleware (software intermedio entre las aplicaciones y el sistema operativo) y un conjunto de aplicaciones bsicas. Android provee una plataforma de desarrollo abierto y ofrece a los desarrolladores la capacidad de crear aplicaciones ricas e innovadoras, adems permite tomar las ventajas que ofrece el hardware del dispositivo para mejorar las aplicaciones. Como desarrolladores se tiene total acceso a las APIs del framework, ya que la arquitectura en Android esta diseada para simplificar el reuso de los componentes, as como APIs para el control de los dispositivos para conectividad, sensores, etc.

  • Gua de Android Certified Professional

    9

    A continuacin se mencionan las principales caractersticas de cada capa de la arquitectura. Kernel de Linux. Primer capa de la arquitectura, el ncleo del sistema operativo Android esta basado en la versin 2.6 del kernel de Linux, similar al que puede incluir cualquier distribucin de Linux, como Ubuntu, solo que adaptado a las caractersticas del hardware en el que se ejecutara Android, es decir, adaptado a dispositivos mviles. El ncleo acta como una capa de abstraccin entre el hardware y el resto de las capas de la arquitectura. El desarrollador no accede directamente a esta capa, sino que debe utilizar las bibliotecas disponibles en capas superiores. De esta forma tambin se evita tener que conocer las caractersticas precisas de cada dispositivo. Por ejemplo, si se requiere hacer uso de la cmara, el sistema operativo se encarga de utilizar la que incluya el equipo, sea cual sea. Para cada elemento de hardware del dispositivo existe un controlador (driver) dentro del kernel que permite utilizarlo desde el software. Otra de las tareas del kernel es la de gestionar los diferentes recursos del dispositivo (energa, memoria, etc.), y del sistema operativo (procesos, red, entre otros).

    Libraries (Bibliotecas). La siguiente capa que se sita justo sobre el kernel la componen las bibliotecas nativas de Android. Estn escritas en C o C++ y

  • Gua de Android Certified Professional

    10

    compiladas para la arquitectura hardware especfica de cada dispositivo. Normalmente estn hechas por el fabricante, quien tambin se encarga de instalarlas en el dispositivo antes de ponerlo a la venta. El objetivo de las bibliotecas es proporcionar funcionalidad a las aplicaciones para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y garantizando que las tareas se llevan a cabo de forma ms eficientes. Entre las bibliotecas incluidas habitualmente encontramos OpenGL (motor grfico), Bibliotecas multimedia (formatos de audio, imagen y video), Webkit (navegador), SSL (cifrado de comunicaciones), FreeType (fuentes de texto), SQLite (base de datos), entre otras. Android Runtime (Entorno de ejecucin). El entorno de ejecucin de Android no se considera una capa como tal, dado que tambin esta formado por bibliotecas. Aqu se encuentran las bibliotecas con las funcionalidades habituales de Java, as como otras especficas de Android. El componente principal del entorno de ejecucin de Android es la mquina virtual. Las aplicaciones se codifican en Java y son compiladas en un formato especfico para que esta mquina virtual las ejecute. La ventaja de esto es que las aplicaciones se compilan una nica vez y de esta forma estarn listas para distribuirse con la total garanta de que podrn ejecutarse en cualquier dispositivo Android que disponga de la versin mnima del sistema operativo que requiera la aplicacin. Cabe aclarar que la mquina virtual de Android es una variacin de la mquina virtual de Java, por lo que no es compatible con el bytecode Java. Java se usa nicamente como lenguaje de programacin, y los ejecutables que se generan con el SDK de Android tienen la extensin .dex que es especfico para la mquina virtual de Android, y por ello no podemos correr aplicaciones Java en Android ni viceversa.

    Application Framework (Marco de aplicaciones). La siguiente capa esta formada por todas las clases y servicios que utilizan directamente las aplicaciones para realizar sus funciones. La mayora de los componentes de esta

  • Gua de Android Certified Professional

    11

    capa son bibliotecas Java que acceden a los recursos de las capas anteriores a travs de la mquina virtual. Algunos de los componentes ms importantes se listan en la siguiente tabla.

    Nombre de la clase o servicios

    Descripcin

    Activity Manager Se encarga de administrar la pila de actividades de la aplicacin as como su ciclo de vida.

    Windows Manager Se encarga de organizar lo que se mostrara en pantalla. Bsicamente crea las superficies en la pantalla que posteriormente pasarn a ser ocupadas por las actividades.

    Content Provider Esta librera crea una capa que encapsula los datos que se compartirn entre aplicaciones para tener control sobre cmo se accede a la informacin.

    Views Elementos que nos ayudarn a construir las interfaces de usuario: botones, cuadros de texto, listas y hasta elementos ms avanzados como un navegador web o un visor de Google Maps.

    Notification Manager Engloba los servicios para notificar al usuario cuando algo requiera su atencin mostrando alertas en la barra de estado. Un dato importante es que esta biblioteca tambin permite el acceso a elementos como el sonido, activar el vibrador o utilizar los LEDs del dispositivo en caso de tenerlos.

    Package Manager Esta biblioteca permite obtener informacin sobre los paquetes instalados en el dispositivo Android, adems de gestionar la instalacin de nuevos paquetes. Un paquete es la forma en que se distribuyen las aplicaciones Android, estos contienen el archivo .apk, que a su vez incluyen los archivos .dex con todos los recursos y archivos adicionales que necesite la aplicacin, para facilitar su descarga e instalacin.

    Resource Manager Permite gestionar todos los elementos que forman parte de la aplicacin y que estn fuera del cdigo, es decir, cadenas de texto traducidas a diferentes idiomas, imgenes, sonidos o layouts.

    Location Manager Permite determinar la posicin geogrfica del dispositivo Android mediante GPS o redes disponibles y trabajar con mapas.

  • Gua de Android Certified Professional

    12

    Sensor Manager Permite manipular los sensores hardware del telfono como el acelermetro, giroscopio, sensor de luminosidad, sensor de campo magntico, brjula, sensor de presin, sensor de proximidad, sensor de temperatura, etc.

    Cmara Con esta biblioteca podemos hacer uso de la(s) cmara(s) del dispositivo para poder tomar fotos o grabar video.

    Multimedia Permite reproducir audio, video e imgenes en el dispositivo.

    Telephony Manager Con esta biblioteca podremos realizar llamadas o enviar y recibir SMS/MMS, aunque no permite reemplazar o eliminar la actividad que se muestra cuando una llamada esta en curso.

    Applications (Aplicaciones). En la ltima capa se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, las nativas (programadas en C o C++) y las administradas (programadas en Java), las que vienen preinstaladas en el dispositivo y aquellas que el usuario ha instalado. En esta capa encontramos tambin la aplicacin principal del sistema: Inicio (Home) o lanzador (launcher), porque es la que permite ejecutar otras aplicaciones mediante una lista y mostrando diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o incluso widgets, que son tambin aplicaciones de esta capa.

    2.2. La mquina virtual de Android Conocer ms sobre las dos mquinas virtuales de Android; Dalvik y ART, su funcionamiento, principales caracterstica y la diferencia entre ellas. La versin de Android 4.4.4 (Android Kit-Kat), tuvo un cambio muy importante en la mquina de virtual del sistema operativo ya que incorpor dos versiones

  • Gua de Android Certified Professional

    13

    de la mquina virtual; Dalvik (de manera predeterminada) y ART (como alternativa). Hasta antes de la versin 4.4.4, la nica mquina virtual incluida en los dispositivos que ejecutaban Android era Dalvik. Esta versin de la mquina interprete estuvo presente en Android desde la versin 2.2 (Android Froyo) y a partir de Android 5.0 (Android Lollipop) desaparece para darle control total a ART. Dalvik es una mquina virtual intrprete que ejecuta archivos en el formato Dalvik Executable (*.dex), un formato optimizado para el almacenamiento eficiente y ejecucin mapeable en memoria. Su objetivo fundamental es el mismo que cualquier mquina virtual; permite que el cdigo sea compilado a un bytecode independiente de la mquina en la que se va a ejecutar, y la mquina virtual interpreta este bytecode a la hora de ejecutar el programa. Dalvik est basado en el tipo de compilacin JIT (Just In Time), por lo que cada vez que se ejecuta una aplicacin en el dispositivo, la parte del cdigo requerida va a ser compilada a cdigo mquina en ese momento. A medida que se utilice la aplicacin y se avance en ella el cdigo adicional va a ser compilado y almacenado en cache para poder reutilizarlo posteriormente mientras la aplicacin este en ejecucin. ART, por otro lado, compila el lenguaje intermedio bytecode, en un archivo binario dependiente del sistema. Todo el cdigo de la aplicacin ser pre-compilado durante la instalacin de la aplicacin, es decir solo una vez, eliminando as el retraso que se puede observar cuando una aplicacin es ejecuta en un dispositivo con Dalvik. A este proceso de pre-compilado se le conoce como AOT (Ahead Of Time) Dejando de lado el potencial aumento de velocidad en la ejecucin de las aplicaciones, el uso de ART proporciona un beneficio secundario muy importante; como ART ejecuta cdigo mquina directamente de la aplicacin, no hace uso extenso del CPU, como en el caso de JIT, por lo que implica menos consumo de batera del dispositivo. En la siguiente imagen se puede observar una comparacin entre las dos mquinas virtuales de Android.

  • Gua de Android Certified Professional

    14

    Independientemente de que versin de la mquina virtual de Android se utilice, el uso de esta permite reducir bastante el tamao del programa buscando informacin duplicada en las diversas clases y reutilizndola. Lo que conocemos en Java como recolector de basura, que se encarga de liberar el espacio en memoria de objetos que ya no utilizamos en nuestros programas, ha sido perfeccionada en Android con el fin de mantener siempre libre la mxima memoria posible. De igual forma, el hecho de que Android haga un uso extenso del lenguaje XML para definir las interfaces grficas y otros elementos, implica que estos archivos deben ser vinculados a la hora de compilar y para que su conversin a bytecode pueda mejorar el rendimiento de nuestras aplicaciones.

  • Gua de Android Certified Professional

    15

    A lo largo del este curso en Android se mostrarn tambin algunos consejos y mejores prcticas para no depender nicamente de la mquina virtual a la hora de hablar de rendimiento en aplicaciones.

    2.3. Procesos en Android Los procesos en Android y la jerarqua de importancia que es manejada por el sistema operativo. Criterios de eliminacin de procesos y asignacin de recursos. En la mayora de los escenarios, una aplicacin Android es ejecutada en su propio proceso y con sus propios recursos. Este proceso Linux es creado para la aplicacin cuando es ejecutada y seguir corriendo hasta que no sea necesario o el sistema operativo reclame los recursos para otras aplicaciones. El tiempo de vida de un proceso en Android es manejada por el sistema operativo, basndose en las necesidades del usuario, los recursos disponibles, etc. Si tenemos una aplicacin que esta consumiendo muchos recursos y arrancamos otra nueva aplicacin, el sistema operativo probablemente le diga a la aplicacin que se queda en segundo plano que libere todo lo que pueda, y si es necesario la cerrara. En Android los recursos son normalmente muy limitados y por eso el sistema operativo tiene ms control sobre las aplicaciones que en programas de escritorio. El sistema operativo puede decidir eliminar un proceso en el mismo punto, cuando la memoria es baja y se requiere memoria por otros procesos que estn sirviendo al usuario. Los componentes de la aplicacin que estn corriendo en el proceso que se apag, son consecuentemente destruidos y cuando se queda pendiente trabajo para ellos, se inicia un nuevo proceso. Para realizar este trabajo de manera eficiente y ordenada Android utiliza un sistema de jerarquas de importancia" en el cual categoriza cada proceso que se inicia en base a los componentes que se ejecutan en ese proceso y el estado de los mismos, por ejemplo, los de importancia ms baja se eliminan primero. El sistema de jerarquas de importancia cuenta con cinco niveles, organizndolos en orden de mayor jerarqua a menor jerarqua seran los siguientes. 1. Proceso en primero plano (Foreground Process). Un proceso que es

    requerido para lo que el usuario est haciendo actualmente, aloja una Actividad que se muestra en primer plano en pantalla y con la cual el usuario esta interactuando en ese momento. Por lo regular habr muy pocos

  • Gua de Android Certified Professional

    16

    procesos de este tipo corriendo a la vez en el sistema y son aquellos que se eliminarn como ltima opcin si la memoria se encuentra en un estado crtico que ni matando al resto de procesos se tendrn los recursos necesarios.

    2. Proceso visible (Visible Process). Es un proceso que no tiene

    componentes en el primer plano (Foreground Process), pero que puede afectar lo que el usuario ve en la pantalla. Un ejemplo puede ser la aplicacin de correo, en la cual demos clic en algn enlace de inters lo que provoca que se ejecute el navegador, este pasara a ser el Foreground Process dejando a la aplicacin de correo en el concepto de Visible Process. Este tipo de procesos se cerrarn nicamente cuando el sistema no tenga los recursos necesarios para mantener corriendo todos los procesos que estn en primer plano.

    3. Proceso de servicio (Service Process). Se trata de un proceso que esta

    ejecutando un servicio que se ha iniciado con el mtodo startService() y adems no se encuentra contemplado en alguna de las categoras antes mencionadas. Estos procesos se encargan de realizar tareas en segundo plano que normalmente son importantes para el usuario (conexin con servidores, actualizacin del GPS, reproductor de msica, etc.), por lo que el sistema nunca va a liquidar un proceso de servicio a menos que sea necesario para mantener vivos todos los procesos visible o en primer plano.

    4. Proceso en segundo plano (Background Process). Un proceso que

    contiene una Actividad que no es actualmente visible para el usuario y no tiene gran importancia. Los programas que ejecut el usuario hace tiempo y no los ha vuelto a usar, pasan a estar en Background. Es importante que cuando una aplicacin pase a segundo plano, el sistema libere, en la medida de lo posible, todos los recursos que pueda para que su rendimiento sea ptimo.

    5. Proceso vaco (Empty Process). Entra en esta categora un proceso que

    no contiene ningn componente activo de la aplicacin, y que solo esta creado para fines de almacenamiento en cach o para mejorar el tiempo de arranque de un componente la prxima vez que se ejecute.

  • Gua de Android Certified Professional

    17

  • Gua de Android Certified Professional

    18

    3. Componentes de una aplicacin

    3.1. Actividades (Activities) Caractersticas del componente principal de una aplicacin en Android y sus mtodos callbacks ms importantes. Una Actividad o Activity es el componente de la aplicacin que provee una ventana, la cual puede tomar diferentes tamaos en pantalla, esta ventana es con la que los usuarios pueden interactuar. Se puedes pensar en una Actividad como el anlogo de una ventana en una aplicacin de escritorio. En las Actividades recae la responsabilidad de presentar los elementos visuales y reaccionar a las acciones del usuario. Es importante tener en cuenta que cada Actividad es independiente de las dems por lo que no importa el nmero que se incluyan en una aplicacin. Cuando se crea una nueva Actividad, la Actividad anterior se detiene mediante notificaciones llamadas Callbacks que el sistema operativo Android usa para gestionar el ciclo de vida de cada Actividad.

    3.1.1. Callbacks de una Actividad. El ciclo de vida de una Actividad est compuesta por siete callbacks que permiten al sistema operativo administrar el ciclo de vida de una Actividad, adems permiten a los desarrolladores realizar acciones al pasar por algn punto del ciclo de vida. Las dos callbacks ms importantes que tiene una Actividad son:

    onCreate( ). Es la primera en ejecutarse cuando se crea la aplicacin.

    onPause( ). Se ejecuta cuando otra Actividad acaba de entrar a primer plano, o acaba de ser instanciada. La Actividad visible se vuelve parcialmente visible.

    Las otras callbacks que conforman el ciclo de vida son:

    onRestart( ). Se ejecuta cuando el usuario vuelve a navegar a una Actividad, luego de haber sido ocultada por otra Actividad.

    onStart( ). Se ejecuta justo antes de que la Actividad sea visible para el usuario y pueda interactuar con ella.

  • Gua de Android Certified Professional

    19

    onResume( ). Se ejecuta justo antes de que la Actividad comience a interactuar con el usuario.

    onStop( ). Se ejecuta cuando la Actividad ya no es visible para el usuario.

    onDestroy( ). Se ejecuta justo antes de destruir la Actividad.

  • Gua de Android Certified Professional

    20

  • Gua de Android Certified Professional

    21

    3.2. Intenciones (Intents) Definicin y principales caractersticas de los diferentes tipos de Intents e Intents-Filter, los cuales sirven para la comunicacin entre los componentes de Android. Los Intents son mensajes (llamados as y definindose como estructuras que describen de forma abstracta una operacin a realizar o de algo que ha ocurrido). Estos mensajes permiten activar tres de los componentes bsicos de una aplicacin: Activities, Services, y Broadcast Receivers. Existen diferentes mecanismos para realizar la entrega de los Intents a cada tipo de componente.

    Un Intent se enva como parmetro dentro del mtodo startActivity( ) startActivityForResult( ) para lazar una actividad.

    Un Intent se enva como parmetro dentro del mtodo startService( ) para iniciar un componente servicio o entregar nuevas instrucciones a un servicio en marcha. Tambin se puede enviar como parmetro dentro del mtodo bindService( ) para establecer una conexin entre un componente y un servicio.

    Un Intent se enva como parmetro dentro de cualquiera de los mtodos de emisin Broadcast como; sendBroadcast( ), sendOrderedBroadcast( ) o sendStickyBroadcast( ), los cuales entregan el Intent a cualquier receptor interesado (Broadcast Receiver).

    Un Intent puede contener informacin de inters para el componente que lo recibe, por ejemplo una accin a realizar o datos para poder realizar la accin, as como para el sistema operativo, como la categora del componente que recibe el Intent o como ser tratada la Actividad al momento de ser ejecutada. Dentro de los principales elementos que pueden incluirse en un Intent tenemos.

    Nombre del componente. Nombre del componente que debe manejar el Intent, en formato de nombre completo, por ejemplo: mx.com.omnius.MainActivity.

    Accin (Action). Es una accin general a realizar. La clase Intent define constantes de accin que se permiten definir (Intent.ACTION_VIEW, Intent.ACTION_CALL, Intent.ACTION_EDIT, Intent.ACTION_MAIN, entre otras).

    Datos (Data). Datos necesarios para realizar una accin o requeridos por el componente que recibe el Intent.

  • Gua de Android Certified Professional

    22

    Categora. Proporciona informacin adicional sobre el tipo de componente que debe manejar el Intent. Al igual que las acciones, existen categoras definidas para poder utilizar, por ejemplo; CATEGORY_HOME, CATEGORY_LAUNCHER.

    Extras. Informacin adicional que puede incluir el Intent y es entregada al componente que lo maneja, se caracterizan por tener un formato llave valor.

    Banderas (Flags). Una bandera permite indicarle al sistema operativo como debe ser tratado un componente al momento de ser ejecutado o despus de realizar su ejecucin, por ejemplo; como debe ser tratada una Actividad dentro de la lista de Actividades recientes.

    3.2.1. Tipos de Intents. Dentro de Android podemos encontrar dos grupos de Intents para manejar componentes.

    Intents Explcitos. Lanzan un componente, generalmente de la misma aplicacin, a partir del nombre de la clase y el paquete en el que se encuentra. Por ejemplo, si queremos mostrar una Actividad especificaremos el nombre de esta. Algunos ejemplos de Intents explcitos son:

  • Gua de Android Certified Professional

    23

    NOTA: Para: algunos de estos ejemplos puede ser necesario aadir al archivo AndroidManifest.xml algunos permisos.

    Intents Implcitos. Permiten lanzar componentes de otras aplicaciones. Utilizan la accin a realizar como base para designar el componente a lanzar. Por ejemplo, si queremos ver una pgina web, se indica la accin y el sistema determinar que debe lanzar un navegador web. Algunos ejemplos de Intents implcitos son:

  • Gua de Android Certified Professional

    24

    NOTA: Para ejecutar algunos de estos ejemplos es necesario aadir al archivo AndroidManifest.xml algunos permisos.

    3.2.2. Intent Filter Para el caso especfico de los Intents implcitos, el sistema operativo debe determinar que aplicacin o aplicaciones son las adecuadas para responder a ciertos Intents. En el caso de que ms de una aplicacin pueda responder a la necesidad del Intent, se le mostrara al usuario un cuadro de dialogo con el cual podr elegir que aplicacin es la ms conveniente para l. Esta

  • Gua de Android Certified Professional

    25

    seleccin de aplicaciones se lleva a cabo mediante los Intent Filters, los cuales son definidos dentro del archivo AndroidManifest.xml. Para reaccionar a determinado Intent implcito un componente de la aplicacin debe tener registrado un elemento Intent Filter dentro del archivo manifest para el evento que se quiere pueda responder. En el caso de que el o los componentes no tengan registrado un Intent filter nicamente podr ser llamado a travs de Intents explcitos.

  • Gua de Android Certified Professional

    26

    3.3. Proveedores de contenido (Content Providers). Descripcin de los Content Providers (Proveedores de contenido), los cuales permiten definir una interfaz para el acceso a datos entre aplicaciones. Los proveedores de contenido (Content Providers) son los encargados de administran el acceso a los datos persistentes de una aplicacin, encapsularlos y de proveer los mecanismos necesarios para el aseguramiento de la integridad en los datos. Los proveedores de contenido estn destinados principalmente a ser utilizados por otras aplicaciones. Existe un objeto llamado ContentResolver el cual puede ser visto como el cliente que solicita informacin y se comunica con el objeto proveedor llamado ContentProvider. Este objeto proveedor recibe solicitudes de los clientes, realiza la accin solicitada y devuelve los resultados, por ello se dice que un ContentProvider no tiene un ciclo de vida ms all del ser referenciado por el ContentResolver. El proveedor de contenido presenta los datos a aplicaciones externas como una o ms tablas de una base de datos relacional. Es importante mencionar que cada proveedor de contenido se identifica con una URI, la cual contiene una cadena de texto nica para el proveedor. Las URI de contenido se encuentran compuestas por tres partes importantes:

    Esquema URI. Tambin conocido como URI scheme, es el mximo atributo esencial para especificar una URI, algunos ejemplos son: http://, https://, content://, file://, market://search?

    Nombre simblico del proveedor. Tambin conocido como autoridad o authority.

    El nombre que apunta a la tabla. La ruta o path separado por una /

  • Gua de Android Certified Professional

    27

    3.4. Servicios (Services) Descripcin de los diferentes tipos de servicios y los diversos mtodos que se tienen para poder iniciar o detener estos componentes. Tambin se aborda la forma de cmo declarar estos componente dentro de una aplicacin en Android. Los servicios son componentes de una aplicacin que se caracterizan por no contar con una interfaz de usuario definida, y que pueden realizar, en segundo plano y cuando otro componente de la aplicacin lo indica, tareas de larga duracin, incluso si el usuario decide salir o cambiar de aplicacin. Un componente tambin puede realizar la vinculacin con un servicio (bound service) para interactuar con l, llegando a realizar en algunas circunstancias comunicacin entre procesos (IPC). Por ejemplo, un servicio puede manejar las operaciones de red, reproducir msica, realizar operaciones con de entrada y salida con archivos o interactuar con un proveedor de contenido, todo desde segundo plano, ejecutndose, de forma predeterminada, en el hilo principal de la aplicacin. Un servicio puede tomar dos formas no excluyentes:

    Iniciado. Cuando un componente de la aplicacin (como una Actividad) inicia un servicio llamando al mtodo startService( ), lo que resulta en una llamada al mtodo onStartCommand( ) del servicio.

    Vinculado. Cuando un competente de la aplicacin se vincula con un servicio llamando al mtodo bindService( ), lo que resulta en una llamada al mtodo onBind( ) del servicio.

    Todos los servicios deben ser declarados en el archivo AndroidManifest.xml de la aplicacin. Para que el sistema reconozca un servicio y pueda ser utilizado, se debe agregar el elemento como elemento hijo del elemento del archivo AndroidManifest. El elemento deber especificar, en el atributo android:name="", el nombre completo (incluyendo el paquete) de la clase del servicio. Por ejemplo:

    Content://mx.com.omnius/notas/1

    Esquema Autoridad

    Ruta

  • Gua de Android Certified Professional

    28

    3.5. Receptores de radiodifusin (Broadcast Receiver) Definicin de los tipos y caractersticas del componente Broadcast Receiver (Receptores de radiodifusin), los cuales permiten registrar y notificar eventos a una aplicacin. Este componente responde a las notificaciones de difusin de todo el sistema como por ejemplo que la pantalla se ha apagado, que la batera del telfono esta por terminarse o que una fotografa ha sido tomada. Las aplicaciones tambin pueden lanzar este tipo de notificaciones, un ejemplo de ello es el aviso de que alguna informacin ha terminado de descargarse en el dispositivo y se encuentran disponibles para que el usuario pueda utilizarla. Los Broadcast Receivers permiten a las aplicaciones recibir Intents que se emiten por el sistema o por otras aplicaciones, incluso cuando los otros componentes de la aplicacin no se estn ejecutando. Un objeto BroadcastReceiver slo es vlido mientras dure la llamada al mtodo onReceive(Context, Intent), durante el cual se considera que es un proceso en primer plano, que es el nivel ms alto de importancia que el sistema Android proporciona a un componente y que destruye nicamente como ltimo recurso; cuando termina la ejecucin de ese mtodo el sistema considera que el objeto ya no esta activo y puede terminarlo. Es importante aclarar que no es posible mostrar un dilogo o vincularse a un servicio desde dentro de un BroadcastReceiver, si es necesario hacerlo se debe usar el API NotificationManager para mostrar un dialogo y Context.startService( ) para enviar un comando al servicio.

  • Gua de Android Certified Professional

    29

    Al igual que la mayora de los componentes es requerido registrar en el archivo AndroidManifest.xml el Receiver al cual queremos que nuestra subclase de BroadcastReceiver pueda escuchar.

  • Gua de Android Certified Professional

    30

    4. Entorno de desarrollo

    4.1. Instalacin de Android Studio. Requisitos y proceso de instalacin del entorno de desarrollo Android Studio, indispensable para realizar las practicas a lo largo del curso y desarrollar aplicaciones en Android. La siguiente gua lleva al usuario por el procedimiento para poder instalar el IDE Android Studio en alguna computadora que ejecute cualquiera de los sistemas operativos ms usados; Windows, Mac o Linux. 1. Abrir un navegador y dirigirse a la siguiente direccin de Internet

    http://developer.android.com/sdk/index.html 2. Seleccionar la opcin Download Android Studio.

  • Gua de Android Certified Professional

    31

    3. Aceptar trminos y condiciones y dar clic en el botn Download Android

    Studio.

  • Gua de Android Certified Professional

    32

    4. Seleccionar la ubicacin donde se guardar y dar clic en el botn Guardar:

    5. Una vez terminada la descarga, abrir la carpeta donde se descarg el archivo y darle doble clic para ejecutar. Aparecer un asistente de instalacin, damos clic en el botn Next.

  • Gua de Android Certified Professional

    33

    6. Seleccionar de la lista las opciones Android SDK y Android Virtual Device.

    Dar clic en el botn Next.

    7. Leer y aceptar los trminos y condiciones. Dar clic en el botn I Agree.

  • Gua de Android Certified Professional

    34

  • Gua de Android Certified Professional

    35

    8. Seleccionar la ubicacin de instalacin de Android Studio y del SDK de Android (Se recomienda no cambiar la ubicacin), dar clic en Next.

    9. Una vez configurado lo anterior se proceder con la instalacin. Dar clic en el botn Install.

  • Gua de Android Certified Professional

    36

    10. Esperar a que la instalacin se lleve a cabo, esto puede llevar varios minutos. Terminado el proceso dar clic en el botn Next y finalizar el asistente. 4.1.1. Requisitos del sistema

    Windows:

    Microsoft Windows 10/8/7/Vista/2003 (32 o 64 bits).

    2 GB en RAM, 4 GB recomendado.

    400 MB de espacio en disco duro para el IDE Android Studio

    Al menos 1 GB de espacio en disco duro para el SDK de Android.

    1280 x 800 resolucin de pantalla como mnimo.

    Oracle Java Development Kit (JDK) 7 o superior

    Mac OS X:

    Mac OS X 10.8.5 o superior.

    2 GB en RAM, 4 GB recomendado.

    400 MB de espacio en disco duro para el IDE Android Studio

    Al menos 1 GB de espacio en disco duro para el SDK de Android.

    1280 x 800 resolucin de pantalla como mnimo.

    Oracle Java Runtime Environment (JRE) 6 o superior.

    Oracle Java Development Kit (JDK) 7 o superior

  • Gua de Android Certified Professional

    37

    En Mac OS, Android Studio corre con Java Runtime Environment (JRE) 6 para la renderizacin de fuentes optimizado. El proyecto puede ser configurado para utilizar Java Development Kit (JDK) 6 o 7. Linux:

    GNOME o KDE Desktop

    GNU C Library (glibc) 2.15 o superior

    2 GB en RAM, 4 GB recomendado.

    400 MB de espacio en disco duro para el IDE Android Studio

    Al menos 1 GB de espacio en disco duro para el SDK de Android.

    1280 x 800 resolucin de pantalla como mnimo.

    Oracle Java Development Kit (JDK) 7 o superior Probado en Ubuntu 14.04 o superior.

    4.2. Instalacin de plataformas Una vez instalado el entorno de desarrollo se deben instalar y actualizar las plataformas para poder desarrollar plenamente las aplicaciones para Android. En este punto se muestra como llevar a cabo esta actualizacin. El SDK de Android utiliza una estructura modular que separa las partes principales del mismo (las versiones del SDK, complementos, herramientas, ejemplos y documentacin) en un conjunto de componentes que podemos instalar por separado. El SDK que es descargado junto con Android Studio o el que es descargado por separado incluye nicamente la ltima versin de las herramientas del SDK, por lo que es altamente recomendable actualizarlo. Para desarrollar una aplicacin en Android es necesario descargar al menos una versin de la plataforma de Android con sus herramientas asociadas. Es posible instalar tantos componentes como plataformas se requieran para el desarrollo de las aplicaciones. Para realizar el proceso de instalacin y actualizacin de las plataformas de Android realizar el siguiente procedimiento.

  • Gua de Android Certified Professional

    38

    1. Abrir Android Studio. 2. Ir al men Tools e ir al apartado Android, seleccionar la opcin SDK

    Manager.

    Tambin se puede acceder directamente al SDK Manager presionando el cono que se encuentra en la barra de herramientas de Android Studio

    3. En el panel principal se pueden ver todas las opciones disponibles para descargar. En este link se puede consultar los componentes mnimos que se recomiendan instalar de la pgina oficial de Android Developers

    4. Por ltimo dar clic en el botn install # packages, donde # es el nmero de

    paquetes que se instalarn el en proceso. Antes de empezar a descargar e instalar los elementos el SDK Manager nos pide confirmar que estamos de acuerdo con los trminos y condiciones de instalacin.

  • Gua de Android Certified Professional

    39

    Dependiendo del nmero de plataformas y componentes que se decida descargar, este proceso puede tardar varios minutos.

    4.3. Android Virtual Device (AVD) Manager Creacin y configuracin de los dispositivo virtuales de Android para poder probar las aplicaciones que se realicen a lo largo del curso. Antes de iniciar a desarrollar una aplicacin en Android es importante tener configurado y disponible un AVD (Android Virtual Device). Las AVD son herramientas imprescindibles para los desarrolladores y testers, ya que permiten emular en una computadora un entorno mvil a los que apuntarn las aplicaciones en Android al momento de querer instalarlas. Cuando recin se ha instalado el SDK (que incluye el AVD Manager) no se cuenta con ningn dispositivo virtual. El administrador de Dispositivos Virtuales de Android (AVD Manager) cuenta con una interfaz grfica de usuario muy fcil de usar para administrar configuraciones de los dispositivos virtuales Android. Se utiliza el trmino AVD como una configuracin de dispositivo que el emulador de Android lee para emular diversos dispositivos Android. Despus de crear una configuracin AVD podemos iniciar el emulador con esa configuracin, justo antes de lanzar el emulador nos preguntara algunas opciones para la sesin actual, como si se quiere escalar el contenido de la pantalla o borrar los datos anteriores de usuario. Para crear un emulador de Android con AVD Manager, realizar los siguientes pasos: 1. Ir al men Tools e ir al apartado Android, seleccionar la opcin AVD Manager.

  • Gua de Android Certified Professional

    40

    2. Se abrir una ventana con el botn Create a virtual device.

  • Gua de Android Certified Professional

    41

    3. El selector de dispositivos nos permites elegir entre crear un dispositivo a

    travs de una plantilla con un perfil ya establecido o crear un nuevo perfil de dispositivo con todas las caractersticas configurables.

  • Gua de Android Certified Professional

    42

    4. Si optamos por crear un dispositivo a travs de una plantilla ya defina, solo se debe dar clic en el dispositivo a crear y posteriormente en el botn siguiente.

    5. La siguiente seccin nos pedir elegir la versin de Android que ejecutar el equipo, una vez seleccionada dar clic en siguiente.

    6. Por ltimo dar un nombre al emulador y finalizar el asistente.

    7. Si la opcin en crear un emulador personalizado, que

    cubra ciertas caractersticas especficas, en el selector de dispositivos

    debemos dar clic sobre el botn New Hardware Profile.

  • Gua de Android Certified Professional

    43

    8. En esta seccin se nos pedir realizar la configuracin del dispositivo a crear.

    La ventana nos permite modificar los siguientes parmetros.

    Device name. Nombre del dispositivo a crear.

    Device type. Tipo de dispositivo a crear, por ejemplo Smartphone.

    Screen. Parmetros de la pantalla; tamao (en pulgada) y resolucin (en pixeles).

    Memory. Cantidad de memoria RAM del equipo (en GB).

    Input. Permite seleccionar si el equipo contara con botones fsicos de atrs, home, men y teclado.

    Supported device states. Define si el dispositivo podr cambiar de modo Portrait a Landscape y viceversa.

    Cameras. Determina si el emulador contar con cmara frontal y/o trasera (El emulador toma la cmara de la computadora para poder realizar la simulacin).

    Sensors. Seleccionar los sensores con los que contara el equipo, por ejemplo giroscopio, brjula, etc.

  • Gua de Android Certified Professional

    44

    9. Una vez realizar la configuracin deseada, dar clic en OK y el emulador

    aparecer en la lista de dispositivos disponibles.

    La primera vez que se ejecuta una AVD puede resultar tardado el proceso, por lo que se recomienda que cuando se estn realizando constantes cambios a un proyecto en Android, no se detenga el AVD, es mejor que permanezca ejecutndose en segundo plano, de esta forma cada vez que se instale una aplicacin con las modificaciones hechas automticamente se instalar en el dispositivo que est corriendo (siempre y cuando sean compatibles en versiones).

  • Gua de Android Certified Professional

    45

    4.4. Comandos para AVD Ejecucin y demostracin de algunos de los comandos ms importantes que se encuentran disponibles para AVD en Android. Usar el emulador de Android, configurado con el AVD Manager, permite realizar funciones como si de un dispositivo fsico se tratase, algunas de las operaciones que podemos realizar en emulador son:

    Instalar aplicaciones.

    Simular llamadas salientes y entrantes.

    Simular el envo y recepcin de mensajes de texto.

    Modificar los valores emulados de la red para el dispositivo.

    Simular eventos del hardware, entre muchos ms. Para poder enviarle instrucciones al emulador y modificar los elementos mencionados anteriormente: 1. Ejecutar un emulador AVD. 2. Abrir la terminal de comandos de Android Studio, la cual se encuentra en las

    pestaas de la parte inferior del IDE. Tambin se puede utilizar la consola de lnea de comandos de la mquina para conectarse al emulador.

    3. Realizar la conexin con el emulador ejecutando el comando;

    telnet localhost

    Donde es el nmero de puerto que ocupa el emulador, este nmero puede obtenerse de la parte superior del emulador junto al nombre.

    4. Ejecutar los comandos deseados para realzar la configuracin del emulador,

    por ejemplo:

    power display. Muestra informacin del estado de la batera.

    power ac . Determinar si la batera se encuentra alimentndose de la corriente elctrica.

  • Gua de Android Certified Professional

    46

    power capacity . Determina el porcentaje de carga de la batera, puede tomar valores entre 0 y 100.

    gms call . Realiza la simulacin de una llamada telefnica entrante.

    sms send . Realiza la simulacin de un mensaje de texto entrante. El valor hace referencia al nmero telefnico emisor y es el contenido que aparecer en el mensaje.

    geo fix . Aade la posicin indicada al dispositivo.

  • Gua de Android Certified Professional

    47

    5. Fundamentos de Aplicaciones Android

    5.1. Creacin y estructura de un proyecto Android

    Pasos para la creacin de un nuevo proyecto en Android Studio. Descripcin de la estructura de un nuevo proyecto y de sus carpetas principales.

    Para crear un nuevo proyecto en Android Studio, una vez instalado todo lo requerido, debemos ejecutar el IDE y desde la pantalla principal de bienvenida seleccionaremos la opcin Start a new Android Studio Project para iniciar el asistente de creacin de nuevo proyecto.

    Si ya se ha abierto anteriormente Android Studio es probable que se habr directamente la ltima aplicacin creada en vez de la pantalla de bienvenida, si este es el caso accederemos a la creacin del nuevo proyecto mediante el men File / New project.

  • Gua de Android Certified Professional

    48

    El asistente de creacin de un nuevo proyecto Android nos guiara de manera muy intuitiva por las distintas opciones de creacin y configuracin del nuevo proyecto.

    Una vez finalizado el asistente de nuevo proyecto, Android Studio crear toda la estructura de proyecto y los elementos indispensables que se requieren para la aplicacin. Si todo se ha creado adecuadamente aparecer la pantalla principal de Android Studio con el proyecto creado.

    En la lateral izquierda de la ventana, podemos observar todos los elementos creados inicialmente para el nuevo proyecto, por defecto vemos la estructura del proyecto en la vista Android, pero se tiene disponible tambin las vistas Packages y Project.

    5.1.1. Estructura del proyecto

  • Gua de Android Certified Professional

    49

    A continuacin se describirn los contenidos principales de la vista Android.

    Carpeta app/java

    En su interior se encuentran dos mdulos con el nombre del paquete principal de la aplicacin definido durante la creacin del proyecto. Una de los mdulos destinados a almacenar el cdigo fuente de la aplicacin y otro para generar los casos de prueba necesarios para la misma (androidTest). Inicialmente, Android Studio crea por nosotros el cdigo bsico para la Actividad principal de la aplicacin, por lo regular la primera clase creada lleva el nombre de MainActivity.java

    Carpeta app/res/drawable

    Contiene las imgenes y los elementos grficos usados por la aplicacin (con excepcin del cono launcher de la aplicacin). Para poder definir los diferentes recursos dependiendo de la resolucin y densidad de la pantalla del dispositivo, se suele dividir en varias subcarpetas.

    /drawable (recursos independientes de la densidad). /drawable-ldpi (recursos densidad baja) /drawable-mdpi (recursos densidad media) /drawable-hdpi (recursos densidad alta) /drawable-xhdpi (recursos densidad muy alta) /drawable-xxhdpi (recursos densidad sper alta)

    Carpeta app/res/layout

    Contiene los ficheros de definicin XML de las diferentes pantallas de la interfaz grfica. Para definir distintos layouts dependiendo de la orientacin del dispositivo se puede dividir tambin en subcarpetas: /layout (destinada a recursos XML con orientacin vertical) /layout-land (destinada a recursos XML con orientacin horizontal)

    Carpeta app/res/anim app/res/animator (no creada por default)

    Contienen la definicin de las animaciones utilizadas por la aplicacin.

    Carpeta app/res/color (no creada por default)

    Contiene ficheros XML de definicin de colores.

  • Gua de Android Certified Professional

    50

    Carpeta app/res/men

    Contiene la definicin XML de los mens de la aplicacin.

    Carpeta app/res/xml (no creada por default)

    Contiene otros ficheros XML de datos utilizados por la aplicacin.

    Carpeta app/res/raw (no creada por default)

    Contiene recursos adicionales, normalmente en formato distinto a XML, que no se incluyan en el resto de carpetas de recursos, por ejemplo .mp3, .mp4, .txt, etc.

    Carpeta app/res/values

    Contiene otros ficheros XML de recursos de la aplicacin, como por ejemplo cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), arrays de valores (arrays.xml), tamaos (dimens.xml), etc.

    5.2. Trabajando con el archivo AndroidManifest.xml Descripcin y manejo del archivo AndroidManifest.xml, principales elementos e importancia de cada uno de ellos en la aplicacin. Cada aplicacin debe tener, en su directorio raz, un archivo llamado AndroidManifest.xml. El archivo manifiesto es el encargado de presentar informacin esencial acerca de la aplicacin al sistema operativo, esta informacin es la que el sistema Android debe tener antes de poder ejecutar cualquier cdigo de la aplicacin. Entre otras cosas, el AndroidManifest.xml permite definir lo siguiente.

    Nombra el paquete Java de la aplicacin. Este nombre de paquete sirve como identificador nico para la aplicacin.

    Describe los componentes de una aplicacin Actividades, Servicios, receptores de radiodifusin y proveedores de contenido. Tambin permite nombrar a las clases que implementan cada uno de los componentes y publica las capacidades de cada uno. Este tipo de declaraciones permiten al sistema operativo Android conocer qu tipo de componentes integran la aplicacin y como deben ser lanzados.

    Determina los procesos que utilizar la aplicacin.

  • Gua de Android Certified Professional

    51

    Declara los permisos que la aplicacin debe tener y que permiten acceder a partes protegidas de la API y la interaccin con otras aplicaciones.

    Definir el nivel mnimo de API en el que corre la aplicacin (opcional).

    Definir el nivel objetivo de API en el que corre la aplicacin (opcional). Este archivo manifiesto, que es un recurso del proyecto, est compuesto por una coleccin estructurada de elementos en XML, los cuales, junto con los atributos de cada uno de ellos sirven para proporcionarle la informacin descrita anteriormente al sistema Android, algunos de estos elementos y sus atributos son: : Es el elemento raz del archivo, debe contener de manera obligatoria un elemento y especificar dentro de sus atributos un xmlns:android y un nombre de paquete. : Pide un permiso que el usuario debe conceder a la aplicacin para que esta pueda funcionar adecuadamente. Estos permisos son otorgados por el usuario cuando se instala la aplicacin y no mientras se ejecuta. : Este elemento contiene subelementos que declaran cada uno de los componentes de la aplicacin y tiene atributos que pueden afectar a todos los componentes. Algunos atributos como icon, label, permision y process pueden ser modificados por cada componente de manera independiente. Otros como debuggable, enable y description no pueden ser sobrescritos por los componentes individuales. : Declara una Actividad (una subclase de Activity) que implementa parte de la interfaz de usuario de una aplicacin. Todas las actividades deben ser representadas por un elemento dentro del archivo AndroidManifest.xml, cualquiera que no sea declarada no podr ser vista por el sistema y nunca se ejecutar. : Especifica los tipos de Intents (intenciones), que una Activity, Services o Broadcast Receiver puede responder. Un Intent Filter permite definir las capacidades de un componente (lo que una Activity o Service puede hacer o un Broadcast Receiver puede enviar) y filtra los Intents que no son significativos para el mismo. : Permite aadir una accin a un Intent Filter. Un elemento debe tener uno o ms elementos . Si no contiene al menos uno, ningn objeto Intent podr ser entregado al elemento.

  • Gua de Android Certified Professional

    52

    : Permite aadir una categora a un Intent Filter. Es una cadena de texto que contiene informacin adicional sobre el tipo de componente que debe manejar la intencin. Por lo regular un Intent Filter no requiere una categora. : Define un componente servicio (una subclase de Service) como uno de los componente de la aplicacin. Recordar que los servicios no cuentan con una interfaz de usuario definida, a diferencia de otros componentes como las Activities, y que tiene como propsito principal realizar tareas de larga duracin en segundo plano. Todos los servicios deben ser representados por un elemento dentro del archivo AndroidManifest.xml. Cualquier que no sea declarado no ser visible para el sistema operativo y no podr ser ejecutado. : Declara un receptor de radiodifusin (una subclase de Broadcast Receiver) como uno de los componentes de la aplicacin. Estos receptores permiten a las aplicaciones recibir las notificaciones que emite el sistema operativo u otras aplicaciones. : Define un componente proveedor de contenido (una subclase de Content Provider) que suministra el acceso estructurado a una base de datos gestionada por la aplicacin. Todos los proveedores de contenido deben ser registrados bajo un elemento en el archivo manifiesto, de lo contrario no ser visible para el sistema operativo y no podr ser ejecutado.

  • Gua de Android Certified Professional

    53

    5.3. Trabajando con el archivo Build.gradle Adems del archivo AndroidManifest.xml, un proyecto Android tambin cuenta los archivos de configuracin Gradle, en esta seccin se muestra la importancia de estos archivos y la descripcin de los elementos ms importantes a tomar en cuenta. Gradle es un conjunto de herramientas de construccin que realiza la gestin de dependencias y permite generar una construccin lgica personalizada de un proyecto. Android Studio utiliza una envoltura Gradle para la integracin plena entre el plugin de Android y Gradle. El plugin de Android Studio para Gradle tambin funciona independiente sin Android Studio, esto implica que se puede llegar a realizar la construccin de

  • Gua de Android Certified Professional

    54

    aplicaciones Android sin la necesidad de tener instalado el IDE de Android Studio, todo esto desde una lnea de comandos. Toda la configuracin para la generacin de un proyecto se lleva a cabo en un par (o ms) de archivos llamados build.gradle ubicados en la seccin Gradle Script dentro del proyecto Android. Los build.gradle son archivos escritos en texto sin formato que utilizan las sintaxis Gradle y del plugin de Android para realizar la configuracin de los siguientes aspectos en la aplicacin.

    Construccin de variantes. El sistema de construccin permite generar mltiples archivos apk con diferentes productos y construir configuraciones diferentes para un mismo mdulo. Esto es til cuando se requiere construir deferentes versiones de la misma aplicacin sin tener que crear proyectos o mdulos por separado para cada versin.

    Dependencias. El sistema de construccin maneja las dependencias del proyecto y brinda soporte a las dependencias del sistema de archivos local y repositorios remotos. Esto evita tener que buscar, desplegar y copiar los paquetes binarios para cada una de las dependencias en el directorio del proyecto.

    Entradas para el archivo AndroidManifest.xml. El sistema de construccin tambin permite especificar valores de entrada para algunos elementos del archivo manifiesto de la aplicacin. Estos valores de construccin anulan los definidos en el archivo AndroidManifest. Esto es til si desea generar mltiples archivos apk para los mdulos, donde cada uno de los archivos apk tiene un nombre diferente de aplicacin, versin mnima del SDK (minSdkVersion), o versin objetivo del SDK (targetSdkVersion).

    Firmar la aplicacin. El sistema de construccin permite especificar la configuracin para realizar el procedimiento y despliegue de la aplicacin. Esto para firmar la aplicacin durante el proceso de construccin.

    Pruebas. Para la mayora de las plantillas existentes en Android Studio, el sistema de construccin crea un directorio de prueba, llamado androidTest y genera un apk prueba con los archivos de prueba en el proyecto, evitando as tener que crear un proyecto de prueba independiente. El sistema de construccin tambin puede ejecutar las pruebas durante el proceso de construccin.

    5.3.1. Archivo Proyect Build

  • Gua de Android Certified Professional

    55

    Se trata de uno de los archivos generados por Gradle para la configuracin del proyecto. Se caracteriza por tener incluido el nombre del proyecto en su nombre. Por defecto el archivo Gradle a nivel de proyecto, build.gradle(proyect:nombreAplicacin), utiliza buildScript para definir los repositorios y las dependencias Gradle. Esto permite que los diferentes repositorios a utilizar puedan hacer uso de versiones diferentes de Gradle.

    5.3.2. Archivo Module Build Este archivo build.gradle para el mdulo de la aplicacin, permite realizar ajustes al mdulo de construccin, incluyendo las modificaciones que anularn los parmetros por defecto que se encuentran en el archivo AndroidManifest.xml. Tambin permite establecer opciones personalizadas de empaquetado. A continuacin algunos parmetros que pueden ser configurados en este archivo.

    compileSdkVersion. Propiedad que especifica la versin objetivo de compilacin.

    buildToolsVersion. Propiedad que permite especificar la versin de las herramientas de construccin para la aplicacin. Para poder utilizar diferentes versiones de estas herramientas deben descargarse del SDK Manager.

    applicationId. Nombre del paquete que identifica de manera nica a la aplicacin.

    minSdkVersion. Valor que permite designar el nivel mnimo de API requerido para que la aplicacin se ejecute. El sistema Android evitar que el usuario instale aplicaciones si el nivel de API del sistema es menor

  • Gua de Android Certified Professional

    56

    que el valor especificado en este atributo. Este valor siempre debe ser incluido dentro de las propiedades de la aplicacin.

    targetSdkVersion. Valor que indica el nivel de API objetivo para la aplicacin. Si no se establece un valor objetivo se toma el minSdkVersion como valor objetivo. Este atributo informa al sistema que la aplicacin ha sido probada con este nivel y debe mantener compatibilidad con versiones hasta la establecida en el valor minSdkVersion.

    versionCode. Es un nmero entero que representa la versin del cdigo de la aplicacin, en relacin con otras versiones. Normalmente, la primera aplicacin que se crea establece este valor en 1, luego aumento montonamente su valor con cada lanzamiento.

    versionName. Representa la versin del cdigo de la aplicacin y es el que debe ser mostrado a los usuarios. El valor es una cadena de texto que describe la versin en un formato .. o cualquier otro tipo de identificador de versin absoluta o relativa.

    buildTypes. Es una estructura que permite controlar la forma en la que se construye y se empaqueta una aplicacin. Por omisin el sistema define dos tipos de construccin: depuracin y liberacin (debug y release). La aplicacin empaquetada en modo debug no se encuentra firmada por defecto.

    dependencies. Esta seccin se encuentra fuera del elemento Android { } del archivo y permite definir o declarar las dependencias a bibliotecas externas del mdulo aplicacin.

    Algo importante a tomar en cuenta al momento de trabajar con los archivos build.gradle es que cualquier modificacin que se realice a los archivos provoca que Android Studio requiera sincronizar el proyecto e importar los cambios en la configuracin. Por eso una vez modificado cualquier archivo se debe dar clic en el mensaje de alerta que aparece en la parte superior del rea de trabajo de Android Studio, se caracteriza por ser de color amarillo y mostrar la leyenda Sync Now.

    6. Creacin y manejo de actividades Una vez creado un proyecto Android y para poder iniciar con la creacin de la interfaz de usuario de la aplicacin, se debe tomar en cuenta que esta debe ser diseada usando una estructura de jerarqua de vistas (views) y grupos de vistas (viewGroup). Las vistas o views, son usualmente elementos grficos como

  • Gua de Android Certified Professional

    57

    botones, campo de texto o etiquetas, y los viewGroup son los contenedores invisibles que definen como las vistas son presentadas en pantalla. La clase viewGroup es la clase base que se tiene para los layouts Manager, existen diferentes tipos de viewGroup con diferentes caractersticas:

    Linear Layout. Permite organizar a las vistas (views) en su interior en una nica fila o columna dependiendo de la orientacin que se establezca.

    Frame Layout. Es un contenedor que dispone todos los elementos vista alineados en el vrtice superior izquierdo del contenedor, por lo que si se aaden dos o ms elementos estos se apilarn.

    Table Layout. Alinea los elementos vista en su interior en un formato de filas y columnas. Un aspecto a considerar es que este tipo de contenedores no tiene lmites fronterizos en sus celdas, filas o columnas.

    Grid Layout. Este contendor fue introducido a partir del API 14 de Android (Android 4.0). Se caracteriza por dividir en lneas invisibles el espacio, estas lneas forman una cuadrcula que permiten la definicin de filas y columnas. Los elementos view en su interior pueden ocupar una o varias celdas de manera horizontal o vertical.

    Absolute Layout. Se encuentra obsoleto desde la versin de API 3 de Android. Permite organizar a las vistas en su interior por posiciones en coordenadas especificas X y Y.

    Relative Layout. Es quiz el ms potente de todos los viewGroup, su flexibilidad se basa en permitir posicionar a los elementos vista en relacin a otros elementos vista y a su propio contenedor.

    ListView. Un viewGroup que permite mostrar los elementos en una lista vertical con una barra de desplazamiento.

    GridView. Permite mostrar los elementos en una tabla bidimensional con barra de desplazamiento.

    TabLayout. Permite crear una interfaz de usuario con pestaas, las cuales pueden contener views dentro de una sola Actividad o usar pestaas para cambiar entre diferentes Actividades.

    Este diseo de jerarquas puede ser construido desde cdigo, el cual en tiempo de ejecucin se convierte en elementos grficos, o definiendo los elementos en archivos XML. Creando archivos XML se tiene la ventaja de poder tener diferentes versiones de interfaz para usarlas en dispositivos con caractersticas diferentes, por ejemplo en pantallas pequeas o grandes.

  • Gua de Android Certified Professional

    58

    Si se desea construir el diseo de interfaz por cdigo se deben definir las propiedades llamando a los mtodos correspondientes para crear, en tiempo de ejecucin, la interfaz de usuario de manera adecuada. Cabe recalcar que todos los archivos XML para crear las interfaces de usuario deben encontrarse en la carpeta res/layout del proyecto.

    6.1. Uso de recursos en una aplicacin

    Para poder dotar a un aplicacin con los recursos necesarios es indispensable conocer donde aadir estos recursos. Aqu se describen los principales recursos que se tienen para poder enriquecer las aplicaciones y los directorios disponibles para cada uno. Al ejecutar una aplicacin, independientemente si se realiza en un emulador de Android o en un dispositivo fsico, los archivos que la aplicacin usa, aparte de los archivos de cdigo fuente, son manejados como recursos dedicados para la aplicacin, para el buen funcionamiento de la aplicacin estos deben ser agrupados en directorios de recursos bajo la carpeta res/ del proyecto con un nombre especial. El sistema Android usa automticamente el recurso basado en la configuracin del dispositivo por lo que el desarrollador no debe preocuparse por definir que elemento utilizar en cada situacin que se presente. Algunos de los tipos de recursos que se tienen disponibles son:

    Recursos de animacin. Permite definir animaciones predeterminadas, las animaciones de tipo Tween son almacenas en el directorio res/anim o res/animator; las animaciones de tipo Frame son guardadas en el directorio res/drawable.

    Recursos de colores. Definen un recurso de color que cambia segn el estado del componente View. Guardados en res/color/ y su acceso desde cdigo es a travs de la clase R.color.

    Recursos dibujables. Definen imgenes de mapa de bits (.png, .jpg o .gif) o en archivos XML tipo "bitmap". Guardados en res/drawable/ y accedidos desde cdigo por la clase R.drawable.

    Recursos layout. Definen la disposicin (layout) de la interfaz de usuario. Guardados en res/layout/ y accedidos desde cdigo por la clase R.layout.

    Recursos de men. Definen los contenidos men de la aplicacin. Guardados en res/menu/ y accedidos desde cdigo por la clase R.menu.

  • Gua de Android Certified Professional

    59

    Recursos de cadenas de texto. Definen cadenas de texto, arreglos de cadenas de texto y "plurales" (opciones para reglas de concordancia gramatical con la cantidad) y pueden incluir formato y estilo de cadenas de texto. Guardados en res/values/ y accedidos desde cdigo por las clases R.string, R.array y R.plurals.

    Recursos de estilo. Definen el aspecto y el formato de los elementos de la interfaz de usuario. Guardados en res/values y accedidos por la clase R.style desde cdigo.

    Recursos de datos en bruto (raw). Contiene archivos que son guardados en su forma original (raw) y que se necesitan leer mediante flujos de datos (manejados por objetos Stream como InputStream), como archivos de audio o video. Almacenados en res/raw y accedidos desde cdigo por la clase R.raw.

    6.2. Seguridad y permisos

    Algunas de las funcionalidades de una aplicacin requieren de permisos especiales que el usuario debe conceder al momento de instalar la aplicacin en el dispositivo, a continuacin se muestran los principales permisos existentes en Android y como definirlos en un proyecto. Para proteger algunos recursos y caractersticas especiales del dispositivo, Android define un esquema de permisos explcitos. Toda aplicacin que dese acceder a un recurso crtico del sistema est obligada a definir la intencin de usarla. En el caso de que una aplicacin intente acceder a un recurso del que no ha solicitado permiso, se genera una excepcin de permisos y la aplicacin es interrumpida inmediatamente.

    Los permisos de una aplicacin son definidos en el archivo AndroidManifest.xml, como se coment en captulos anteriores, y autorizados por el usuarios cuando instala la aplicacin. El esquema de permisos de Android impide que se realiza una concesin parcial de permisos, por lo que si un permiso no es concedido por el usuario la aplicacin no se instalar en el dispositivo. A continuacin se mencionan algunos de los permisos ms importantes y el nivel de riesgo en el que se clasifica.

    Nombre del permiso Descripcin Nivel de riesgo

    CALL_PHONE Llamar a nmeros telefnicos directamente sin la intervencin del usuario. Implica servicios por los que se tiene que pagar.

    Muy alto

  • Gua de Android Certified Professional

    60

    INTERNET Permite establecer conexiones a Internet. Es quiz el permiso ms importante.

    Muy alto

    READ_PHONE_STATE Leer el estado del dispositivo y su ID. Permite el acceso al nmero telefnico, nmero IMEI, identificador SIM, nmero de identificacin nico de Google, el nmero de una llamada entrante entre otros datos

    Muy alto

    SEND_SMS Enviar mensajes de texto (SMS) sin intervencin del usuario. Implica servicios por los que se tiene que pagar

    Muy alto

    RECEIVE_SMS Permite identificar cuando un mensaje de texto (SMS) ha llegado, as como leer su contenido, modificar o borrar el mensaje

    Alto

    CAMERA Permite el acceso a la(s) cmara(s) y tomar fotos y video. El usuario puede o no intervenir al realizar la accin.

    Moderado

    RECORD_AUDIO Permite grabar sonidos desde el dispositivo. El usuario puede o no intervenir en la accin.

    Moderado

    READ_CONTACTS Permite leer la informacin de los contactos almacenados.

    Moderado

    WAKE_LOCK Impide que el telfono entre en modo suspensin

    Bajo

    BLUETOOTH Permite crear conexiones Bluetooth con otros dispositivos.

    Bajo

    VIBRATE Permite hacer vibrar el dispositivo. Bajo

  • Gua de Android Certified Professional

    61

    6.3. Uso de los mensajes Log

    Como herramienta para poder depurar aplicaciones y ver el contenido de ciertas variables en una aplicacin, se muestra el uso de los mensajes Log de Android. Android proporciona una API para el envo de mensajes a la consola de depuracin de Android Studio, comnmente son conocidos como mensajes Logs. Generalmente se usan los mtodos: Log.v() Log.d() Log.i() Log.w() y Log.e(), la letra despus de "Log." indica el nivel de detalle que se desea usar: VERBOSE, DEBUG, INFO, WARN, ERROR.

    Los mtodos reciben como parmetro dos cadenas de texto; la primera permite etiquetar el mensaje y la segunda es el contenido del mensaje

  • Gua de Android Certified Professional

    62

    7. Interfaz de usuario y controles.

    7.1. Unidades y layout. Cuando se disea una aplicacin que admita diferentes densidades de pantalla, lo NO recomendado es usar pxeles absolutos (px) para definir tamaos o distancias, lo cual genera problemas porque cada pantalla tiene densidades de pxeles diferentes, resultando en que el mismo nmero de pxeles absolutos (px) corresponda a varios tamaos fsicos.

    Para comprender las unidades de medicin utilizadas en Android se deben

    entender los siguientes trminos :

    Resolucin. El nmero total de pixeles fsicos en una pantalla.

    Densidad de la pantalla. La cantidad de pixeles en un rea fsica de la pantalla, normalmente se conoce como DPI (puntos por pulgada).

    Lo que S es recomendado es usar pxeles independientes de la densidad que tenga el dispositivo y hay dos unidades de medicin posibles:

    dp: pxeles independientes de la densidad, es una unidad de pixel virtual que escala el tamao fsico de un pxel a 160dpi (puntos por pulgada) y se utiliza para definir los diseos de interfaz de usuario con el fin de expresar las dimensiones del diseo o la posicin de una manera independiente de la densidad.

    sp: igual que el anterior pero escalada en funcin del tamao de la letra configurado por el usuario, usado para tamao de letra.

    Ejemplo de aplicacin sin soporte para diferentes densidades (px), como se muestra en baja, media y pantallas de alta densidad.

  • Gua de Android Certified Professional

    63

    Ejemplo de aplicacin con un buen soporte para diferentes densidades (es independiente de la densidad ), como se muestra en baja, media y pantallas de alta densidad.

    7.2. Objetos Widgets.

    TextView Control que se utiliza como medio de salida, es decir, para mostrar un determinado texto al usuario. Tambin es posible cambiar el texto a mostrar. Para agregar un TextView desde el editor grfico del layout, se arrastra alguno de los tipos del objeto TextView, localizados en la paleta de componentes del panel Widgets, lo que aade un elemento al archivo XML Layout.

    Este

    control y las dems vistas cuenta con diferentes atributos dentro de las principales se encuentran:

    android:text. Texto del control a mostrar.

    android:id. ID (Identificador) del control , con el que se identificar de forma nica en el cdigo con findViewById().

  • Gua de Android Certified Professional

    64

    android:layout_width y android:layout_height. Especifica el ancho y la altura de la vista con respecto al layout que lo contiene. Estos valores pueden ser, una dimensin por ejemplo "12dip", o una de las constantes especiales de ajuste; match_parent, constante especial para la altura o el ancho de una vista. La vista debe ser tan grande como su padre menos el relleno (padding), wrap_content, constante especial para la altura o el ancho de una vista. La vista debe ser lo suficientemente grande como para incluir su contenido adems del relleno (padding).

    android:layout_margin. Propiedad que indica el espacio entre el control y su padre Layout.

    android:padding. Indica el espacio entre Texto o Imgenes que

    pongamos dentro del control y el propio control.

    android:gravity. Gravedad del control, permite poner una alienacin.

    android:TextSize. Se indica un tamao en sp , si no ponemos esto, se

    selecciona un tamao por defecto estndar.

    android:backgroud. Con esta propiedad se define el color de fondo del

    control.

    android:textColor. Color del texto.

    android:typeface. Estilo del texto, negrita, cursiva, etc.

    EditText

    Los controles de entrada de texto le permiten al usuario escribir texto mediante un teclado flotante en pantalla, el cual aparece cuando el usuario "toca" el control. El campo de texto puede ser de una o varias lneas y, adicionalmente, permite otras acciones, como seleccionar texto, copiarlo o pegarlo y autocompletado de texto.

    Para agregar un campo de texto, desde el editor grfico del layout, se arrastra alguno de los tipos del objeto EditText, localizados en la paleta de componentes

    del panel Text Fields, lo que aade un elemento al archivo XML

    Layout.

  • Gua de Android Certified Professional

    65

    Aparte de los atributos que

    comparte con el TextView, este control tiene atributos exclusivos, los ms

    utilizados son estos dos:

    android:hint. Permite poner un texto por defecto mientras el campo esta

    vaco.

    android:inputType. Esta propiedad indica el tipo de teclado que a

    aparecer cuando se pulsa sobre el campo, por ejemplo si solo se requiere

    introducir nmeros se indica el valor en numrico.

    Button

    Un botn es un control que consta de un texto o cono (o ambos) el cual puede responder a una accin o evento que se produce cuando el usuario lo toca.

    Se pueden crear botones de tres maneras :

    1. Con texto, utilizando la clase Button

    2. Con un cono, utilizando la clase ImageButton

  • Gua de Android Certified Professional

    66

    3. Con texto e cono, utilizando la clase Button con el atributo android: drawableLeft

    Para agregar un botn, desde el editor grfico del layout, se arrastra alguno de los tipos del objeto Button o ImageButton, localizados en la paleta de componentes ampliando el panel Widgets, los cuales agregan los elementos

    o , respectivamente, al archivo XML layout.

    Tambin es posible modificar la propiedad background el botn, permitiendo con esto darle un estilo ms personalizado, aadiendo ya sea un color o una imagen.

    CheckBox Permiten al usuario seleccionar una o ms

    opciones de un conjunto y por lo general se debe presentar cada opcin en una

  • Gua de Android Certified Professional

    67

    lista vertical. Para cada opcin se debe crear un elemento en el

    layout y registrar un clic listener, ya que cada opcin se gestiona por separado.

    Para agregar un ckeckbox, desde el editor grfico del layout , se arrastra el objeto localizado en la paleta de componentes del panel Widgets.

    Aparte de los atributos que comparte con el TextView, este control tiene un

    atributo adicional android:checked, que permite a la opcin estar seleccionada,

    si el valor es true y false en caso contrario .

    Radio Button

    El radiobutton permiten al usuario seleccionar una opcin de un conjunto, para

    cada opcin se debe crear un elemento en el layout. Sin

    embargo , ya que los radiobuttons son mutuamente excluyentes, se deben agrupar dentro de un RadioGroup, al agruparlos, el sistema asegura que slo una opcin puede ser seleccionada a la vez. Para agregar un radiobutton, desde el editor grfico del layout, se arrastra el objeto localizado en la paleta de componentes del panel Widgets.

  • Gua de Android Certified Professional

    68

    Aparte de los atributos que

    comparte con el TextView, este

    control tiene un atributo

    adicional android:checked,

    que permite a la opcin estar

    seleccionada, si el valor es true y false en caso contrario .

    Spinners

    Los Spinners proporcionan una manera rpida para seleccionar un valor de un conjunto . Por defecto muestra un valor seleccionado, al tocar el spinner muestra un men desplegable con todos los dems valores disponibles, de las cuales se puede seleccionar uno nuevo. Para trabajar con los Spinners es indispensable proporcionar un adaptador de datos por medio del mtodo setAdapter() y proveer de un listener para poder manipular las opciones que se elijen a travs del mtodo setOnItemSelectedListener(). Tambin se puede definir en un recurso de cadenas las opciones a mostrar, este recurso se indica en la propiedad entries del spinner. Para agregar un Spinner, desde el editor grfico del layout, se arrastra el objeto localizado en la paleta de componentes del panel Widgets.

  • Gua de Android Certified Professional

    69

    Aparte de los atributos bsicos, el spinner cuenta con atributos propios los cuales son:

    android:prompt: indica el texto a mostrar cuando se muestra la lista de opciones.

    android:entries. indica el nombre de un recurso array xml que contiene los elementos a mostrar.

    Para agregar los datos desde un adaptador primero se obtiene la referencia en cdigo del spinner con findViewById(), posteriormente se define el arreglo de datos a mostrar y se pasa como parmetro al adaptador, una vez definido el adaptador se agrega al spinner con el mtodo setAdapter().

    Finalmente para manipular las opciones seleccionadas se establece un setOnItemSelectedListener al spinner y sobreescribiendo el callback onItemSelected() podremos acceder al elemento que fue seleccionado de la lista.

    Eventos

    En Android, hay ms de una forma de interceptar eventos desde la interaccin del usuario con la aplicacin, el enfoque principal es capturar los eventos especficos de una vista (view). Y la clase View nos proporciona los medios para hacerlo, mediante mtodos "callback" que el sistema de Android llama cuando la respectiva accin ocurre en esa vista (view), estos mtodos estn contenidos dentro de unas interfaces de la clase View llamadas detectores de eventos (event listeners).

    Estos detectores de eventos (event listeners) contienen un solo mtodo

  • Gua de Android Certified Professional

    70

    "callback", los cuales son:

    onClick(): de View.OnClickListener. Llamado cuando el usuario da click en el elemento, o presiona "enter" sobre l con las teclas de navegacin.

    onLongClick(): de View.OnLongClickListener. Llamado cuando el usuario da click y sostiene el click en el elemento, o presione y mantiene el "enter" con las teclas de navegacin.

    onFocusChange(): de View.OnFocusChangeListener. Llamado cuando el usuario se desplaza sobre o fuera del elemento, usando las teclas de navegacin.

    onKey(): de View.OnKeyListener. Llamado cuando el usuario se centra en el elemento y presiona o suelta una tecla en el hardware del dispositivo.

    onTouch(): de View.OnTouchListener. Llamado cuando el usuario realiza una accin calificada como un evento de toque, incluyendo presionar, liberar, o cualquier gesto de movimiento en la pantalla (dentro de los lmites del elemento).

    onCreateContextMenu(): de View.OnCreateContextMenuListener. Llamado cuando se esta construyendo un men contextual (resultado de un click sostenido).

    7.3 Uso de ListView

    La vista de grupo ListView permite mostrar una lista de elementos de forma vertical. Estructuralmente un ListView contiene un View especfico por cada fila. Tambin se compone de un ScrollView, el cual permite generar el desplazamiento vertical por si se agota la pantalla para nuestros elementos.

    La lista de elementos es poblada automticamente usando un Adapter

    (ListAdapter). Un adaptador es un objeto que comunica a un ListView los datos

    necesarios, ya se extrayendo el contenido de un arreglo o de una consulta a

    base de datos, para crear las filas de la lista. Es decir, conecta la lista con una

    fuente de informacin. Adems de proveer la informacin, tambin genera los

    Views para cada elemento de la lista. Por lo tanto, la lista solo termina mostrando

    la informacin final.

    Los adaptadores se representan programticamente por la clase Adapter.

    Dependiendo de la naturaleza de la lista se elegir el tipo de adaptador. Existen

  • Gua de Android Certified Professional

    71

    subclases de la clase Adapter provedas por Android, que facilitan la mayora de

    casos al poblar una lista. Pero tambin se puede personalizar su

    comportamiento para cubrir la necesidades requeridas.

    Para agregar un ListView, desde el editor grfico del layout, se arrastra el objeto localizado en la paleta de componentes del panel Containers.

    Dentro de las propiedades del ListView se tiene las siguientes:

    android:id. Este es el id que se utiliza en el cdigo para referirse a la lista.

    android:layout_width = match_parent. Con esto le decimos a nuestra

    aplicacin que la lista ocupar todo el ancho disponible por el layout

    padre.

    android:layout_height = wrap_content. Este valor indica que la lista

    ser tan alta como sea necesario para mostrar el contenido.

    Para la implementacin de una ListView, en el cdigo se puede realizar de dos formas desde una Activity que extienda o herede de la clase ListActivity o de Activity.

    Eventos del ListView

    Es posible ejecutar acciones cuando se selecciona algn item de la lista, haciendo uso de la interfaz OnItemClickListener. Esta interfaz permite disparar el mtodo onItemClick(), el cual permitir ejecutar acciones sobre el item.

    onItemClick() recibe tres parmetros. El primero es el View que usa al adaptador, en este caso la lista. El segundo es el View del item que ha sido presionado, el tercero hace referencia a la posicin del item en la fuente de datos que maneja el adaptador y el cuarto es un identificador del elemento.

  • Gua de Android Certified Professional

    72

    7.3.1 Listas simples

    En las listas simples el adaptador por default espera un slo TextView para llenar, es decir la view de cada fila estar conformada solo por texto.

    Para la implementacin de una ListView primero se asocia el ListView de nuestra clase java con la vista ListView mediante findViewById. A continuacin en el mtodo crate se declara el arreglo que contendr los elementos que se desean mostrar en la lista:

    Una vez hecho esto, se crea el Adapter, el cual permite el acceso a los elementos del arreglo y tambin es responsable de crear una vista para cada elemento en el arreglo, en este caso ser un ArrayAdapter y se aade a la lista con el m