Taller Introductorio a Android

78
Curso de iniciación al desarrollo de aplicaciones Android Sergio Almagro Carrión

Transcript of Taller Introductorio a Android

Page 1: Taller Introductorio a Android

Curso de iniciación al desarrollo de aplicaciones Android

Sergio Almagro Carrión

Page 2: Taller Introductorio a Android

Índi

ce 1.  Introducción a Android.

1.1. Evolución de Android.

1.2. ¿Qué es Android? 1.3. La arquitectura Android.

2. Preparación del entorno de desarrollo

2.1. Instalación de JDK y Eclipse 2.2. Instalación del SDK de Android vía ADT bundle 2.3. Gestión del idioma y configuración del plugin ADT con el SDK de Android. 2.4. Instalar y utilizar el emulador para Android 2.5. Otros Kits para desarrollar en Android

3. Programación Android 3.1. Modelo de aplicación en Android. 3.2. Estructura de una aplicación Android (.apk) 3.3. Primer ejemplo: “Hola mundo”. 3.4. Ciclo de vida de una actividad. 3.5. Desarrollo de una Actividad con AppInventor.

4. Creación de una aplicación para leer RSS

Page 3: Taller Introductorio a Android

1 1.1. Evolución de Android 1.2. ¿Qué es Android? 1.3. La arquitectura Android

Una breve introducción

Page 4: Taller Introductorio a Android

1.1

Evol

ució

n de

And

roid

Origen de Android: •  Android era un sistema operativo para móviles prácticamente desconocido hasta

que en 2005 Google lo compró. Hasta noviembre de 2007 sólo hubo rumores, pero en esa fecha se lanzó la Open Handset Alliance, que agrupaba a muchos fabricantes de teléfonos móviles, chipsets y Google y se proporcionó la primera versión de Android, junto con el SDK para que los programadores empezaran a crear sus aplicaciones para este sistema.

•  Aunque los inicios fueran un poco lentos, debido a que se lanzó antes el sistema operativo que el primer móvil, rápidamente se ha colocado como el sistema operativo de móviles más vendido del mundo, situación que se alcanzó en el último trimestre de 2010.

•  En 2011, acabó dominando el mercado (50,9%) y hacia Julio de 2012, el S.O. Android registraba casi un millón de activaciones diarias a nivel mundial, ocupando a día de hoy en España el 82% del mercado.

Podéis consultar el gráfico con la historia de Android en www.droidlife.com

Page 5: Taller Introductorio a Android

1.1

Evol

ució

n de

And

roid ¿Qué ha motivado el éxito de Android?

1. Ineficacia en sus competidores: •  Los dispositivos embebidos se programaban a bajo nivel: necesidad de

entender todo su hardware. •  Sistemas operativos: abstracción del hardware. Ej: Symbian. Código en C/C++.

Nivel medio/bajo, bibliotecas propietarias, complicaciones con hardware específico.

•  Java ME: abstrae del HW y del SO. Máquina virtual limita el acceso a hardware.

2. Un planteamiento abierto, pero comercial. •  El S.O. Android y su plataforma de desarrollo se basan en Licencia Apache:

§  Open Source. §  Permite a los fabricantes añadir extensiones propietarias sin ponerlas en

manos de la comunidad del software libre

Page 6: Taller Introductorio a Android

1.1

Evol

ució

n de

And

roid

¿Qué ha motivado el éxito de Android? 3. Una comunidad de desarrollo, gracias a

sus completas APIs y documentación ofrecida:

•  Cualquier fabricante puede diseñar un dispositivo que trabaje con Android, y la posibilidad de abrir el sistema operativo y adaptarlo o extenderlo para su dispositivo.

•  Valor añadido para los fabricantes de dispositivos: las empresas se ahorran el coste de desarrollar un sistema operativo completo para sus dispositivos.

•  Valor añadido para los desarrol ladores: los

desarrolladores se ahorran tener que programar APIs, entornos gráficos, aprender acceso a dispositivos hardware particulares, etc.

Page 7: Taller Introductorio a Android

1.1

Evol

ució

n de

And

roid

Aspectos negativos: •  Obligatorio log-in con el ID de Google (dependencia)

•  Constante intercambio de datos con Google

•  Envío de localización (desactivable).

•  Los usuarios no están concienciados de la dependencia de los servidores de Google y lo aceptan sin más.

•  Aunque el SO sea libre, gran parte de su valor está en los servicios gratuitos de Google, que no son libres ni conocemos el tratamiento que dan a nuestra información privada.

•  Fragmentación de Android, solucionada a partir de la versión 4 (ICS): Diversidad de versiones del sistema operacional así como diversas capacidades en los dispositivos (como diferentes resoluciones, tamaños y formatos de pantalla).

•  Seguridad: existe la posibilidad de que ciertas apps contengan malware. Este riesgo se da al activar la opción de activar orígenes desconocidos e instalar apps que obtengamos fuera del Google Play Store.

Page 8: Taller Introductorio a Android

1.2

¿Qué

es

And

roid

? Acerca de Android:

•  Android es un conjunto (o una pila) de software. •  Incluye un sistema operativo. •  El SDK dispone de herramientas y API’s para el desarrollo de aplicaciones. •  Se programa usando lenguaje JAVA. •  Ejecuta aplicaciones sobre una maquina virtual derivada de Java VM: DALVIK VM. •  Al tener un kernel Linux, Android comparte la misma filosofía abierta de “mejóralo

como quieras”. Al desarrollador esta filosofía le permite tener acceso a todos los aspectos internos del dispositivo, no sólo mediante las herramientas oficiales de desarrollo, sino también otras más avanzadas creadas por terceros.

Curiosidades: •  iOS y Android pueden ser configurado para un arranque dual en un iPhone o iPod

Touch liberados con la ayuda de OpeniBoot e iDroid. •  También es posible instalar Android en dispositivos Windows Mobile 6.5 como por

ejemplo el HTC HD2. •  Recientemente, ha sido publicada una versión de ICS para Raspberry Pie.

Page 9: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Pila de software Android: ¿qué elementos la integran?

•  Núcleo (branch) basado en linux (memoria, procesos, hardware). Ej: Siyah, DorimanX… •  El núcleo incluye las librerías nativas .so de linux para acceder a los dispositivos. •  Bibliotecas/servicios open source (SQLite, WebKit, OpenGL, administrador de medios, etc). •  Entorno de ejecución (runtime) basado en una máquina virtual Dalvik VM. •  Framework de desarrollo: pone interfaces a disposición de las aplicaciones, a fín de acceder

a los servicios y bibliotecas del sistema. •  Interfaz de usuario para pantalla (GUI), dispositivos de entrada, etc. •  Aplicaciones preinstaladas (Flash Player, Google API, etc.). •  Android Market, para obtener e instalar aplicaciones OTA (Over The Air). •  SKD: herramientas, plug-in para Eclipse, emulador, ejemplos, doc.

Page 10: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Pila de software Android: ROM’s

Al paquete que integra núcleo, librerías, servicios, archivos de configuración y aplicaciones se

le denomina ROM. Una ROM proviene de una versión inicial de Android liberada por Google en código abierto, a la cual el fabricante le añade sus librerías nativas (drivers), aplicaciones y entornos gráficos para adaptarlo a su dispositivo y lanzarlo al mercado. Según su procedencia, a las ROM’s se les etiqueta como: •  Oficiales (stock ROM’s) : Son compiladas por el fabricante y suelen modificarlas los

operadores para introducir drivers optimizados para su red, aplicaciones y darle un aspecto corporativo (publicidad).

•  Cocinadas ( AOSP y AOKP): derivan del código abierto que Google proporciona, y el desarrollador no es un fabricante ni un ente oficial, sino un usuario experto.

En el caso de las ROM’s AOSP(Android Open Source Project), se busca la estabilidad limitándolas a la hora de configurarlas. Por otro lado, las AOKP (Android Open Kang Proyect) parten del desarrollo de una AOSP y añaden configuraciones más avanzadas de diseño. Un ejemplo de ROM’s cocinadas son las ROM’s AOSP de CyanogenMod y MIUI y la propia ROM AOKP.

Page 11: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Pila de software Android: ROM’s

•  Según su modo de ejecutar las aplicaciones dentro de la máquina virtual tenemos: §  Odexed: Utilizan archivos cache (.odex) para acelerar la carga del S.O.

Las aplicaciones APK (application packages) cuentan con un archivo .odex que tiene la funcionalidad de agilizar y comprimir los recursos que usará la aplicación de antemano. Al arrancar, Android verificará la partición /cache para cargar esos archivos .odex y agilizar el proceso de ejecución de las mismas. Con esos archivos odex el sistema sabe de antemano qué aplicaciones hay que ejecutar primero. Las ROM que vienen por defecto en el terminal (Stock) suelen ser odexed dado que sus aplicaciones del sistema tales como Calendario, Contactos, etc no han sido modificadas.

§  Deodexed: son ROM’s con aplicaciones recompiladas y personalizables, pero más lentas. Las aplicaciones ya no utilizan archivos fuertemente comprimidos odex, sino que los recursos quedan almacenados en el interior de las mismas (ficheros .dex). Esto facilita tareas como el hacer “themes” ya que todos los recursos de una aplicación están dentro de sí misma. Como desventaja, el proceso de arranque la primera vez tomará más tiempo de lo esperado, pues ha de generar los archivos caché para la Dalvik VM además de que la ROM deodexed dejará menos espacio libre en nuestro dispositivo.

Page 12: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid ¿Como actúa Android en un tablet / smartphone?

•  Firmware del dispositivo. Comprende varias partes:

§  Cargador de arranque (Bootloader): un software desarrollado por el fabricante del dispositivo y no se puede modificar por defecto. Cuenta con un mecanismo para actualizar partes del firmware (recovery) y (no siempre) con otro para arranque en caso de error (brick).

§  Núcleo: como hemos dicho, se basa en el kernel de Linux y permite arrancar un proceso (init.d) que inicia la Dalvik VM, la carga de los drivers y otro procesos del sistema.

§  Módem: Capa de drivers para el manejo de interfaces de radio (WiFi, BT,GPS, telefonía, etc.).

§  ROM: Aplicaciones y ficheros de configuración del S.O.

Page 13: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Proceso de arranque:

•  Es importante conocerlo para el manejo avanzado de

los dispositivos. •  Su funcionamiento, similar al de un PC, consta de las

siguientes fases: •  Activación de la CPU à Carga el bootloader. •  El bootloader carga el kernel en memoria, el cual

es personalizable, permitiendo así de instalar ROM’s personalizadas.

•  Una vez carga en la RAM el núcleo, arranca el proceso init, dando paso a la ejecución de los

demonios de sistema y al proceso Zygote, responsable de mantener en marcha la Dalvik VM y los procesos del S.O. como p. ej. la interfaz de usuario.

CPU activa Bootloader Núcleo Linux Dalvik VM + ROM

Page 14: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Arquitectura de Android:

•  Está formada por varias capas que

facilitan la creación de aplicaciones. •  Acceso a las capas más bajas mediante

el uso de librerías para evitar programar a bajo nivel las funcional idades necesarias para que una aplicación haga uso de los componentes de hardware de los teléfonos.

•  Cada una de las capas utiliza elementos de la capa inferior para realizar sus

funciones, es por ello que a este modelo de arquitectura se le conoce también como pila.

Page 15: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Elementos de la arquitectura: Núcleo

El núcleo del sistema operativo Android es un kernel Linux versión 2.6, similar al que puede incluir cualquier distribución de Linux, como Ubuntu, solo que adaptado a las características del hardware en el que se ejecutará Android (normalmente, un smartphone). •  Proporciona una capa de abstracción para los elementos hardware a los que

tienen que acceder las aplicaciones. Esto permite que se pueda acceder a esos componentes sin necesidad de conocer el modelo o características precisas de los que están instalados en cada teléfono. De esta forma, si una aplicación necesita, por ejemplo, la brújula, podrá utilizar la que incluya el teléfono, sea cual sea. Para cada elemento hardware del teléfono existe un controlador (o driver) dentro del kernel que permite utilizarlo desde el software.

•  Además de proporcionar controladores hardware, el kernel se encarga de gestionar los diferentes recursos del teléfono (energía, memoria, …) y del sistema operativo en sí: procesos, elementos de comunicación (networking), etc.

Page 16: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Elementos de la arquitectura: Bibliotecas (I)

La capa que se sitúa justo sobre el kernel la componen las bibliotecas nativas de Android (también mal llamadas librerías, por el término inglés libraries). •  Están escritas en C o C++ y compiladas para la arquitectura hardware específica del

teléfono, tarea que normalmente realiza el fabricante, que también se encarga de instalarlas en el terminal antes de ponerlo a la venta.

•  Su cometido: proporcionar funcionalidad a las aplicaciones, para tareas que se repiten con frecuencia, evitando tener que codificarlas cada vez y garantizando que se llevan a cabo de la forma más eficiente (en teoría, al menos).

Estas son algunas de las bibliotecas que se incluyen habitualmente: •  Gestor de superficies (Surface Manager): se encarga de componer las imágenes que se

muestran en la pantalla a partir de capas gráficas 2D y 3D. Cada vez que la aplicación pretende dibujar algo en la pantalla, la biblioteca no lo hace directamente sobre ella. En vez de eso, realiza los cambios en imágenes (mapas de bits) que almacena en memoria y que después combina para formar la imagen final que se envía a pantalla. Esto permite realizar con facilidad diversos efectos: superposición de elementos, transparencias, transiciones, animaciones, etc.

•  SGL (Scalable Graphics Library): desarrollada por Skia (empresa adquirida por Google en 2005) y utilizada tanto en Android como en Chrome (navegador web de Google), se encarga de representar elementos en dos dimensiones. Es el motor gráfico 2D de Android.

Page 17: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid Elementos de la arquitectura: Bibliotecas (II)

•  OpenGL | ES (OpenGL for Embedded Systems): motor gráfico 3D basado en las APIs (Application Program Interface) de OpenGL ES 1.0, 1.1 (desde la versión 1.6 de Android) y 2.0 (desde la versión 2.2 de Android). Utiliza aceleración hardware (si el teléfono la proporciona) o un motor software altamente optimizado (o eso dice Google) cuando no la hay.

•  Bibliotecas multimedia: basadas en OpenCORE, permiten visualizar, reproducir e incluso grabar numerosos formatos de imagen, vídeo y audio como JPG, GIF, PNG, MPEG4, AVC (H.264), MP3, AAC o AMR.

•  WebKit: motor web utilizado por el navegador (tanto como aplicación independiente como embebido en otras aplicaciones). Es el mismo motor que utilizan Google Chrome y Safari (el navegador de Apple, tanto en Mac como en el iPhone).

•  SSL (Secure Sockets Layer): proporciona seguridad al acceder a Internet por medio de criptografía.

•  FreeType: permite mostrar fuentes tipográficas, tanto basadas en mapas de bits como vectoriales.

•  SQLite: motor de bases de datos relacionales, disponible para todas las aplicaciones.

•  Biblioteca C de sistema (libc): está basada en la implementación de Berkeley Software Distribution (BSD), pero optimizada para sistemas Linux embebidos. Proporciona funcionalidad básica para la ejecución de las aplicaciones.

Page 18: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid

Elementos de la arquitectura: Entorno de ejecución. No se considera una capa en sí mismo, dado que también está formado por bibliotecas. En concreto, las bibliotecas esenciales de Android, que incluyen la mayoría de la funcionalidad de las bibliotecas habituales de Java así como otras específicas de Android. •  Su componente principal es la máquina virtual Dalvik: ejecuta

todas y cada una de las aplicaciones no nativas de Android. •  Las aplicaciones se codifican normalmente en Java y son

compiladas, pero no para generar un ejecutable binario compatible con la arquitectura hardware específica del dispositivo Android. En lugar de eso, se compilan en un formato específico para la máquina virtual Dalvik, que es la que las ejecuta.

•  Esto permite compilar una única vez las aplicaciones y distribuirlas ya compiladas teniendo la total garantía de que podrán ejecutarse en cualquier dispositivo Android que disponga de la versión mínima del sistema operativo que requiera cada aplicación.

•  Aunque las aplicaciones se escriben en Java, Dalvik no es realmente una máquina virtual Java. Es decir, no es compatible con el bytecode Java (instrucciones ejecutables independientes de la arquitectura hardware) que ejecutan las máquinas virtuales Java normales.

Page 19: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid

Elementos de la arquitectura: Entorno de ejecución (II). •  Java se usa únicamente como lenguaje de programación, pero los ejecutables

que se generan con el SDK de Android no son ejecutables Java convencionales y, por lo tanto, no se pueden ejecutar en máquinas virtuales Java convencionales.

•  Durante el proceso de compilación de los programas Java (normalmente archivos .java) sí que se genera, de forma intermedia, el bytecode habitual (archivos .class). Pero esos archivos son convertidos al formato específico de Dalvik en el proceso final (.dex, de Dalvik executable).

•  Google hace esto por una cuestión de optimización. Los archivos .dex son mucho más compactos que los .class equivalentes (hasta un 50% menos de tamaño), lo que permite ahorrar espacio en el teléfono (algo siempre escaso) y acelerar el proceso de carga. Además, a diferencia de las máquinas virtuales tradicionales, Dalvik se basa en registros en lugar de una pila para almacenar los datos, lo que requiere menos instrucciones. Esto permite ejecuciones más rápidas en un entorno con menos recursos.

•  Las aplicaciones Android se ejecutan cada una en su propia instancia de la máquina virtual Dalvik, evitando así interferencias entre ellas, y tienen acceso a todas las bibliotecas mencionadas antes y, a través de ellas, al hardware y al resto de recursos gestionados por el kernel.

Page 20: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid

Elementos de la arquitectura: Marco de aplicación Esta capa la forman todas las clases y servicios que utilizan directamente las aplicaciones para realizar sus funciones y que, obviamente, se apoyan en las bibliotecas y en el entorno de ejecución que ya hemos detallado. La mayoría de los componentes de esta capa son bibliotecas Java que acceden a los recursos a través de la máquina virtual Dalvik. Entre las más importantes se encuentran las siguientes: •  Administrador de actividades (Activity Manager): controla el ciclo de vida de las

actividades y la propia pila de actividades (se pueden definir como las ventanas que se muestran en la pantalla del dispositivo).

•  Administrador de ventanas (Windows Manager): se encarga de organizar lo que se muestra en pantalla, creando superficies que pueden ser rellenadas por las actividades.

•  Proveedor de contenidos (Content Provider): permite encapsular un conjunto de datos que va a ser compartido entre aplicaciones creando una capa de abstracción que hace accesible dichos datos sin perder el control sobre cómo se accede a la información. Por ejemplo, uno de los proveedores de contenido existentes permite a las aplicaciones acceder a los contactos almacenados en el teléfono.

•  Vistas (Views): son los controles que se suelen incluir dentro de las ventanas. Entre ellas encontramos botones, cuadros de texto, listas, y otras como un navegador web o un visor de GMaps.

Page 21: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid

Elementos de la arquitectura: Marco de aplicación (II) •  Administrador de notificaciones (Notification Manager): proporciona servicios

para notificar al usuario cuando algo requiera su atención. Ejemplos: alerta en la barra de estado, emitir sonidos, activar el vibrador o hacer pardear los LEDs.

•  Administrador de paquetes (Package Manager): Maneja información sobre los paquetes actualmente instalados, además de gestionar la instalación de nuevos paquetes.

•  Administrador de telefonía (Telephony Manager): proporciona acceso a la pila hardware de telefonía del dispositivo Android.

•  Administrador de recursos (Resource Manager): proporciona acceso elementos propios de una aplicación que se incluyen directamente en el código: cadenas de texto en diferentes idiomas, imágenes, etc. Personaliza la aplicación en función del idioma o la resolución de pantalla que tenga, por ejemplo.

•  Administrador de ubicaciones (Location Manager): permite determinar la posición geográfica mediante GPS o las redes disponibles.

•  Administrador de sensores (Sensor Manager): permite gestionar todos los sensores hardware disponibles: acelerómetro, giroscopio, etc.

•  Cámara: proporciona acceso a las cámaras del dispositivo Android, tanto para tomar fotografías como para grabar vídeo.

•  Multimedia: conjunto de bibliotecas que permiten reproducir y visualizar audio, vídeo e imágenes en el dispositivo.

Page 22: Taller Introductorio a Android

1.3

Arq

uite

ctur

a de

And

roid

Elementos de la arquitectura: Aplicaciones La capa superior de esta pila software la forman las aplicaciones. En este saco se incluyen todas las aplicaciones del dispositivo, tanto las que tienen interfaz de usuario como las que no, tanto las nativas (programadas en C o C++) como las administradas (programadas en Java), tanto las que vienen de serie con el dispositivo como las instaladas por el usuario.

Aquí está también la aplicación principal del sistema: Inicio (Home), también llamada a veces lanzador (launcher), porque es la que permite ejecutar otras aplicaciones proporcionando la lista de aplicaciones instaladas y mostrando diferentes escritorios donde se pueden colocar accesos directos a aplicaciones o incluso pequeñas aplicaciones incrustadas o widgets, que son también aplicaciones de esta capa.

Lo principal a tener en cuenta de esta arquitectura es que todas las aplicaciones utilizan el mismo marco de aplicación para acceder a los servicios que proporciona el sistema operativo. Esto implica dos cosas:

•  que podemos crear aplicaciones que usen los mismos recursos que usan las aplicaciones nativas (nada está reservado o inaccesible).

•  que podemos reemplazar cualquiera de las aplicaciones del teléfono por otra de nuestra elección. Este es el verdadero potencial de Android y lo que lo diferencia de su competencia: control total por parte del usuario del software que se ejecuta en su teléfono.

Page 23: Taller Introductorio a Android

2 2.1. Instalación de JDK y Eclipse 2.2. Instalación del SDK de Android vía ADT bundle 2.3. Gestión del idioma y configuración del plugin

ADT con el SDK de Android. 2.4. Instalar y utilizar el emulador para Android

Preparación del entorno de desarrollo

Page 24: Taller Introductorio a Android

2.1. Consiguiendo la Instalación de JDK y Eclipse (Juno)

Para tener un kit de desarrollo básico, necesitaremos: 1.  Instalar el JRE o el JDK de Java, en su versión más reciente:

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html Se descarga en esta web, tras aceptar el "Oracle Binary Code License Agreement for Java SE" (solo es pulsar el radiobutton y elegir nuestra plataforma).

2.  La versión de Eclipse para desarrollo de móviles (versión para arquitecturas x86 - 32bits, bajo S.O. Windows) http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR1/eclipse-mobile-juno-SR1-win32.zip

3.  Instalar el idioma, ya que permite avanzar más rápido, aunque es recomendable adaptarse al Inglés.

4.  Instalar el SDK de Android, para lo cual podemos descargar directamente desde http://developer.android.com/sdk/index.html y enlazarlo con Eclipse (tedioso L). En nuestro caso, como vamos a desarrollar con Eclipse, esto no es necesario ya que recientemente google developers ha colgado el adt-bundle, un todo en uno con Eclipse+SKD tools+Plugin ADT y en principio, perfectamente configurado para la ultima version de Android J.

Page 25: Taller Introductorio a Android

2.2. Instalación del SDK de Android vía ADT bundle

Una vez hemos preparado una instalación de Eclipse, debemos instalar el SDK de Android, necesario para compilar las aplicaciones

y los paquetes .apk: 1.  Entrar con el navegador a

http://developer.android.com/sdk/index.html 2.  En esa página, aparece el enlace (boton azul grande) para la

descarga del ADT bundle, un paquete que contiene las 3 piezas esenciales para desarrollo en Android con el IDE eclipse ya incluido J.

3.  Aceptaremos las condiciones y términos legales para poder descargar la versión que se adapte a nuestro PC, 32 o 64 bits.

Para el curso os facilitaremos el bundle para las plataformas Windows 32 bits o 64 bits, de forma que lo podáis instalar en cualquier lugar donde decidáis desarrollar.

Page 26: Taller Introductorio a Android

2.3. Gestión del idioma en Eclipse

Una vez instalado Eclipse, procederemos a configurar el plugin del idioma. Estas traducciones no vienen dadas por los desarrolladores del IDE, sino que las obtendremos desde http://babel.eclipse.org/babel/ En primer lugar, debemos pulsar la barra “Help” del IDE.

Page 27: Taller Introductorio a Android

2.3. Gestión del idioma y configuración del plugin ADT.

Estos son los pasos a seguir para cambiar el idioma:

1.  Pulsar en “Help” y click en “Install new software”

2.  Eclipse nos mostrará una ventana en la que nos pregunta por la URL del recurso a instalar, en este caso debemos agregar: http://download.eclipse.org/technology/babel/update-site/R0.10.0/juno

3.  Eclipse comenzará a descargar los recursos de la URL y entonces los mostrará en una lista.

Page 28: Taller Introductorio a Android

2.3. Gestión del idioma y configuración del plugin ADT.

4.  Elegiremos de la lista el “babel language Packs in Spanish”.

5.  Nos pedirá que confirmemos la instalación, ya que es un software no desarrollado por Eclipse y comenzará a instalarse.

6.  Una vez terminado, Eclipse solicitará reiniciarse.

7.  Finalmente, en el siguiente reinicio el idioma ya debe haber cambiado.

Page 29: Taller Introductorio a Android

2.3. Gestión del idioma y configuración del plugin ADT.

Proceso de instalación y resultado: ahora ya lo tenemos en Español.

Page 30: Taller Introductorio a Android

2.3. Gestión del idioma y configuración del plugin ADT.

Estos son los pasos a seguir para configurar el plugin ADT (Android Developers Tools) Para configurar el entorno de desarrollo SDK, debemos abrir la pestaña Ventana à Android

SDK manager. Desde ahí podremos instalar la versión del API que necesitemos para desarrollar una aplicación para una o varias versiones de Android. A fecha de este curso, podemos instalar hasta el API 17 (versión 4.2), así como unas cuantas herramientas extra.

Page 31: Taller Introductorio a Android

2.3. Gestión del idioma y configuración del plugin ADT.

Como el bundle ya viene equipado con lo básico para desarrollar, tan solo es recomendable instalar la documentación y algunos ejemplos que nos sirvan de ayuda…

Si nos fijamos, ya tenemos instalados algunos elementos del SDK

Tan solo resta aceptar las condiciones y términos (pulsa Accept All) …y esperar a que se descargue todo para empezar a trabajar.

Page 32: Taller Introductorio a Android

2.4. Instalar y utilizar el emulador para Android

A la hora de desarrollar y probar aplicaciones, a veces es recomendable utilizar un dispositivo virtual y que se ejecute todo bajo la plataforma donde estamos trabajando, en este caso un

PC. Para ello, existen los emuladores de android, como el que nuestro IDE trae por defecto en caso de haber instalado el bundle.

El emulador más recomendable para desarrollar es este que trae consigo el bundle, pero aquí os vamos a mostrar otro que podéis utilizar como segundo recurso para probar y depurar aplicaciones Android: el

emulador Bluestacks. La ventaja, es que es capaz de sincronizar las aplicaciones de nuestro móvil o tablet con el emulador (ojo! Puede llegar a ocupar mucho espacio en el disco duro si lo sincronizas).

Page 33: Taller Introductorio a Android

2.4. Configurando el emulador del bundle ADT.

Para trabajar en una plataforma Android, debemos tener claro cual es el dispositivo para el que vamos a desarrollar, debido a las diferentes

configuraciones de resolución y de memoria principalmente, el emulador debe ser personalizado, a fín de tener un cierto parecido con el dispositivo real y así poder probar las aplicaciones en el entorno virtual adecuado. Para esto, debemos definir un nuevo Android Virtual Device. Esto se hace en la pestaña Ventana à Android Virtual Device Manager. Cuando pulsamos la opción del menú, aparecerá una ventana para gestionar los diferentes dispositivos virtuales para emular.

Afortunadamente, el plugin ADT ya trae configuraciones para ciertos dispositivos reales, por ejemplo el HTC Nexus S. Podemos darle a “New” y generar un dispositivo de prueba, eso si, llevando cuidado para ponerle el nombre, pues no acepta espacios. En el ejemplo de la figura, le hemos puesto “emulador_de_Nexus_S”.

Page 34: Taller Introductorio a Android

2.4. Configurando el emulador del bundle ADT.

Si nos interesa emular un tablet, Google TV u otro dispositivo con unas prestaciones distintas a las de los que trae el ADT plugin, podemos editar uno de forma manual e incluirlo

en la lista del AVD Manager.

Page 35: Taller Introductorio a Android

2.4. Configurando el emulador Bluestacks.

Para instalar el emulador bluestacks, tan solo hay que acceder a http://bluestacks.com/ y descargarse el paquete de instalacion msi para windows.

Page 36: Taller Introductorio a Android

2.5. Otros Kits para desarrollar en Android

Todo el desarrollo de aplicaciones en Android no se hace en Java, hay una parte que de aplicaciones como Juegos y servicios delicados, por su alta exigencia de recursos que

requiere de compilación en código nativo. Para ello se puede utilizar el NDK (native development kit) que Google facilita en la misma web de desarrolladores http://developer.android.com/tools/sdk/ndk/index.html

Has de saber que al ser un sistema Linux, Android permite ejecutar scripts de shell y aplicaciones nativas para Linux. Un ejemplo de ello es el paquete de aplicaciones aircrack-ng que permiten, de momento, utilizar un dispositivo con chipset Broadcomm (Galaxy S2, Nexus One,etc.) para hacer auditorias Wifi. También podemos ejecutar desde consola aplicaciones Dalvik (las apk que vamos a desarrollar) gracias al comando “am start”.

Page 37: Taller Introductorio a Android

3 3.1. Modelo de aplicación en Android. 3.2. Estructura de una aplicación Android (.apk) 3.3. Primer ejemplo: “Hola mundo”. 3.4. Ciclo de vida de una actividad. 3.5. Desarrollo de una Actividad con AppInventor.

Programación Android

Page 38: Taller Introductorio a Android

3.1

Mod

elo

de a

plic

acio

nes Aplicaciones

•  Es un paquete con componentes de Android, vque vienen comprimidos en un formato denominado Android PacKage (apk).

•  Cada aplicación es independiente •  Se ejecuta en su propio proceso de Linux •  Cada proceso tiene su propia máquina virtual de

Java •  Cada aplicación tiene asignado un ID de usuario

de Linux •  Solo ese ID de usuario tiene permisos para

acceder a los archivos de la aplicación

Componentes de una aplicación •  Actividades •  Servicios •  Broadcast receivers •  Content providers

Page 39: Taller Introductorio a Android

3.1

Mod

elo

de a

plic

acio

nes

•  Actividad: Presenta una interfaz de usuario enfocada en algo que el usuario puede realizar, como elegir un contacto, seleccionar una fotografía,… §  Aplicación = conjunto de actividades independientes

que trabajan juntas. §  Una de las actividades se marca como la inicial al

arrancar una aplicación.

•  Servicio: No tiene UI y se ejecuta en background por periodo indefinido. Ej. Reproductor de música §  Expone una interfaz para interactuar

o  Ej. Parar la reproducción de música §  Es posible acceder desde otros componentes o

aplicaciones

Page 40: Taller Introductorio a Android

3.1

Mod

elo

de a

plic

acio

nes

•  Broadcast receivers: No realiza ningún acción por si mismo. Recibe y reacciona ante anuncios de tipo broadcast.

§  Existen muchos originados por el sistema o  Ej. Batería baja

§  Las aplicaciones puede lanzar un broadcast §  No tienen UI, aunque pueden iniciar una actividad para

atender al anuncio

•  Content providers: Expone un conjunto especifico de datos a otras aplicaciones

§  Los datos pueden estar almacenados en cualquier lugar: fichero, SQLite, internet,…

§  Hace uso de un ContentResolver para acceder a los datos expuestos por un content provider

Page 41: Taller Introductorio a Android

3.1

Mod

elo

de a

plic

acio

nes

Activación de los componentes: §  Content providers

•  Al recibir una petición desde un ContentResolver §  Actividades, Servicios y Broadcast Receivers

•  Al recibir un mensaje asíncrono llamado Intención: §  En actividades y servicios

•  Representa la intención de querer realizar algo •  Ej. La intención de seleccionar un contacto como

remitente §  En broadcast receivers

•  Representa el anuncio del comienzo de una acción

•  Ej. Anunciar que se ha pulsado el botón de la cámara

Page 42: Taller Introductorio a Android

Estructura de un archivo instalador (formato .apk).

Un archivo con extensión .apk es un paquete para el sistema operativo Android. Este formato es una variante del formato JAR de Java y se usa para distribuir e instalar componentes empaquetados para la plataforma Android para smartphones y tablets. •  Un archivo .apk normalmente contiene lo siguiente:

§  AndroidManifest.xml §  classes.dex §  resources.arsc §  res (carpeta) §  META-INF (carpeta) §  lib (carpeta)

•  El Formato APK es básicamente un archivo comprimido ZIP con diferente extensión por lo cual pueden ser abiertos e inspeccionados usando un software archivador de ficheros como 7-Zip, Winzip, WinRAR o Ark.

3.2

Estr

uctu

ra d

e un

a ap

licac

ión

Page 43: Taller Introductorio a Android

El Fichero manifest.xml •  Propiedades de la aplicación •  Declaración de todos los componentes existentes en la aplicación

§  Intent filters •  Un componente indica a intenciones puede responder

•  Declaración de los permisos requeridos •  uses-permission •  Acceso a determinado, estado del telefono, acceso a internet, etc. •  Los permisos que requiere se muestran al usuario al instalar la

aplicación. •  Declaración de permisos propios

§  Restringe que aplicaciones pueden hacer uso de un determinado componente 3.

2 Es

truc

tura

de

una

aplic

ació

n

Page 44: Taller Introductorio a Android

Estructura de una actividad / proyecto. Estos son los ficheros que podemos encontrar en un proyecto de Eclipse ADT. •  res/anim = animaciones del proyecto •  res/color = colores usados en la aplicación •  res/drawable = imágenes usadas en el proyecto •  res/layout = las interfaces graficas de usuario •  res/menu = la estructura de los menús •  res/raw = Cualquier fichero que no encaje en el resto de directorios y que

queramos referenciar desde «R.java» •  res/values = los valores como cadenas de texto que queramos referenciar

desde «R.java» •  res/xml = los fichero de configuración de nuestra aplicación tales como

preferencias, widget o metadatos. •  libs/ = librerias necesitadas por el proyecto. «.jar» •  AndroidManifest.xml = fichero que describe nuestra aplicación. Detalla los

componentes de esta, sus permisos y librerias externa. •  build.properties Fichero de configuración del proyecto. •  build.xml Fichero de configuración para la compilación del proyecto. «ant»

3.2

Estr

uctu

ra d

e un

a ap

licac

ión

Page 45: Taller Introductorio a Android

3.3.

Hol

a m

undo

.apk

Proyecto: HolaMundo 1.  Eclipse seleccionar File > New > Project y aparecerá una nueva

ventana en la que hay que seleccionar Android Project. 2.  A continuación hay que indicar la siguiente información y hacer

clic en Finish: •  Project name (nombre del proyecto): HolaMundo •  Build Target: se debe seleccionar al menos una plataforma. •  Application name (título de la aplicación): Hello, Android •  Package name (paquete de la aplicación, debe ser único

entre los paquetes instalados en un sistema Android): com.example.helloandroid

•  Create Activity (nombre de la clase stub generada por el plugin, subclase de la clase Activity de Android, y utilizada para ejecutar acciones): HelloAndroid

•  Min SDK version: indicar el mínimo nivel de API requerido por la aplicación. Si no se indica aparecerá el siguiente mensaje al ejecutar la aplicación:

WARNING: Application does not specify an API level requirement!

Page 46: Taller Introductorio a Android

3.3.

Hol

a m

undo

.apk

Page 47: Taller Introductorio a Android

3.3.

Hol

a m

undo

.apk

Page 48: Taller Introductorio a Android

3.3.

Hol

a m

undo

.apk

Proyecto: HolaMundo El proyecto se habrá creado y dentro de src contendrá la clase HolaMundo.java con el siguiente contenido:

package  com.example.holamundo;    import  android.os.Bundle;  import  android.app.Activity;  import  android.view.Menu;    public  class  Hola_Mundo  extends  Activity  {            @Override          protected  void  onCreate(Bundle  savedInstanceState)  {                  super.onCreate(savedInstanceState);                  setContentView(R.layout.activity_hola__mundo);          }            @Override          public  boolean  onCreateOptionsMenu(Menu  menu)  {                  //  Inflate  the  menu;  this  adds  items  to  the  action  bar  if  it  is  present.                  getMenuInflater().inflate(R.menu.activity_hola__mundo,  menu);                  return  true;          }  

}  

La clase generada hereda de la clase Activity de Android, que es el tipo de clase que se utiliza para ejecutar alguna acción. Una aplicación puede tener definidas varias actividades pero un usuario únicamente interactúa con una de ellas a la vez. El método onCreate() será llamado por el sistema Android cuando la actividad se inicia, y es donde se debe realizar toda la inicialización y configuración de la interfaz de usuario.

Page 49: Taller Introductorio a Android

3.3.

Hol

a m

undo

.apk

Proyecto: HolaMundo Interfaz de usuario El código generado se completa (líneas modificadas en negrita) para incluir la interfaz de usuario que mostrará el saludo. package  com.example.holamundo;    import  android.os.Bundle;  import  android.app.Activity;  import  android.view.Menu;  import  android.widget.TextView;    public  class  Hola_Mundo  extends  Activity  {            @Override          protected  void  onCreate(Bundle  savedInstanceState)  {                  super.onCreate(savedInstanceState);                  setContentView(R.layout.activity_hola__mundo);                  TextView  tv  =  new  TextView(this);                  tv.setText("Hello,  Android");                  setContentView(tv);          }  ...  

En este ejemplo se utiliza la clase TextView porque es la subclase que maneja los textos. Al objeto TextView se le pasa como parámetro un objeto de tipo Context, el cual ofrece servicios como la resolución de recursos, la obtención de acceso a base de datos, y preferencias. Como la clase Activity hereda de Context, y a su vez la clase Hola_Mundo es una subclase de Activity, es también Context y por lo tanto se puede utilizar this como parámetro.

Page 50: Taller Introductorio a Android

3.3.

Hol

a m

undo

.apk

Proyecto: HolaMundo A continuación, se define el contenido del texto con setText(). Por último, se pasa la TextView a setContentView() con el fin de mostrarla como el contenido de la interfaz de usuario de la actividad. Si la actividad no llamara a este método, entonces no habría interfaz de usuario y el sistema mostraría una pantalla en blanco. Ejecución de la aplicación El siguiente paso es ejecutar la aplicación mediante la opción Run > Run de Eclipse mientras estamos posicionados sobre el proyecto.

Page 51: Taller Introductorio a Android

3.3.

Hol

a m

undo

.apk

Proyecto: HolaMundo Ejecución de la aplicación Finalmente, tras elegir el modo Android Application, se nos ejecutará el emulador que hemos configurado anteriormente (Nexus S) y veremos la aplicación ejecutándose.

Page 52: Taller Introductorio a Android

3.4.

Cic

lo d

e vi

da d

e un

a ac

tivid

ad Ciclo de vida de las actividades

Como hemos visto, cada pantalla de una aplicación se implementa como una actividad Moverse a la siguiente actividad supone llamar al método startActivity(), startActivityForResult(). Una aplicación puede reutilizar actividades de Android o de otras aplicaciones. •  onCreate: Se llama a este método cuando se crea la actividad. •  setContentView: Asigna a la vista el contenido del recurso layout. •  R.layout.main: Recurso de layout de la aplicación.

Pero, el entorno Android debe atender a eventos de cualquier clase (llamadas, alarmas, etc.) •  La aplicaciones en Android no tienen control de su ciclo de vida. •  Deben estar preparadas para su terminación en cualquier momento. •  Cada aplicación se ejecuta en su propio proceso. •  El runtime de Android gestiona el proceso de cada aplicación y por extensión de

cada Actividad que contenga.

Page 53: Taller Introductorio a Android

3.4.

Cic

lo d

e vi

da d

e un

a ac

tivid

ad Ciclo de vida de las actividades

Durante la vida de una actividad esta pasa por una serie de estados Para la clase Activity existen métodos para ser redefinidos (override) en sus clases derivadas que incluyen el código a ejecutar en las transiciones entre estados. Los métodos redefinidos siempre deben llamar al método de la superclase:  protected  void  onCreate(Bundle  savedInstanceState)  {                  super.onCreate(savedInstanceState);                  setContentView(R.layout.activity_hola__mundo);                  TextView  tv  =  new  TextView(this);                  tv.setText("Hello,  Android");                  setContentView(tv);          }

Estados de una actividad: •  Activo (Running): La actividad está encima de la pila, es visible, tiene el foco. •  Pausado (Paused): La actividad es visible pero no tiene el foco. Se alcanza este estado

cuando pasa a activa otra actividad transparente o que no ocupa toda la pantalla. Cuando una Actividad es tapada por completo pasa a estar parada.

•  Parado (Stopped): Cuando la actividad no es visible. Se recomienda guardar el estado de la ui, preferencias, etc

•  Destruido (Destroyed): Cuando la Actividad termina, o es matada por el runtime de Android. Sale de la Pila de Actividades.

Page 54: Taller Introductorio a Android

3.4.

Cic

lo d

e vi

da d

e un

a ac

tivid

ad Métodos de transición de estados

•  onCreate(Bundle):Se invoca cuando la Actividad se arranca por primera vez. Se utiliza para tareas de inicialización como crear la interfaz de usuario de la Actividad. Su parámetro es null o información de estado guardada previamente por onSaveInstanceState().

•  onStart(): Se invoca cuando la Actividad va a ser mostrada al usuario. •  onResume() :Se invoca cuando la actividad va a empezar a interactuar con el

usuario. •  onPause(): Se invoca cuando la actividad va a pasar al fondo porque otra actividad

ha sido lanzada para ponerse delante. Se utiliza para guardar el estado de la actividad.

•  onStop() : Se invoca cuando la actividad va a dejar de ser visible y no se necesitará durante un tiempo. Si hay escasez de recursos en el sistema, este método podría no llegar a ser invocado y la actividad ser destruida directamente.

•  onRestart(): Se invoca cuando una actividad parada pasa a estar activa •  onDestory(): Se invoca cuando la Actividad va a ser destruida. Si hay escasez de

recursos en el sistema, este método podría no llegar a ser invocado y la actividad ser destruida directamente.

•  onSaveInstanceState(Bundle) :Se invoca para permitir a la actividad guardar su estado de la ui. Normalmente no necesita ser redefinido

•  onRestoreInstanceState(Bundle): Se invoca para recuperar el estado guardado por onSaveInstanceState(). Normalmente no necesita ser redefinido.

Page 55: Taller Introductorio a Android

3.4.

Cic

lo d

e vi

da d

e un

a ac

tivid

ad Ciclo de vida de las actividades

Page 56: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or AppInventor es una aplicación web que tiene como objetivo facilitar la programación en

Android. Está pensado y diseñado de manera que una persona que no tenga ni idea de programar pueda crearse su aplicación Android en media hora. Esto es útil de cara a implementar una aplicación de prueba, o una GUI sencilla, que despues podemos ampliar/mejorar en Eclipse.

Page 57: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Inventor consta de 2 apartados principales.

El primero es la aplicación web en la que podrás diseñar la interfaz gráfica y definir los componentes y variables de tu futura aplicación. Podemos definir 8 lugares de interés. (ver figura de la anterior transparencia). 1] Para navegar ente Proyectos, Diseños y Ejemplos 2] Todos los elementos gráficos que puedes añadir. Desde botones hasta sensores de movimiento pasando por clientes Twitter. 3] Cómo quedará la aplicación. Arregla y ordena los elementos a tu gusto 4] Los componentes activos que tienes actualmente. Puedes cambiarles el nombre o borrarlos 5] Los componentes no visibles: están en la aplicación pero no tienen “representación gráfica” (ej: notificación, sensores,…) 6] Las propiedades de cada elemento. Aquí puedes cambiar el nombre, color, tamaño, textos y demás. 7] Abre el Editor de Bloques (explicado a continuación) 8] Guarda y comparte tu aplicación con todo el mundo

Page 58: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or El editor de Bloques

En la web tan sólo puedes diseñar el apartado visual, pero el programa no funcionará: pones las piezas pero es en el editor dónde defines que hace cada cosa.

Page 59: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or El editor de Bloques

Podemos distinguir 1] Entre Mis Bloques y los Built-in Blocksblockeditor2 Cada botón o cuadro de texto de tu programa corresponde a un bloque (2). Con el editor de bloques puedes interaccionar con los bloques para realizar las funciones que desees. Lo verás con más detalle en la próxima entrega con el vídeo de una aplicación. Los Built-in Blocks corresponden a bloques predefinidos que realizan acciones tales como bucles, lógica u operaciones matemáticas entre otras. 2] Cada uno de los componentes de tu programa. Desde aquí podrás asignarles las funciones que quieras. 3] Todo el tablero en el que introducir las órdenes. Muy pequeño a mi gusto. 4] Botón para enviar la aplicación al teléfono para testearla.

Page 60: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or ¿Cómo exportar a Eclipse?

Existen tutoriales para tal efecto, utilizando una herramienta que se conoce como Java Bridge https://groups.google.com/forum/?fromgroups=#!topic/app-inventor-instructors/EKZOZLeIavs También hay una aplicación, actualmente en desarrollo, que traduce de AppInventor a Java directamente: http://code.google.com/p/appinventor-java-translation/

Page 61: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

1.  Iniciar el diseño y crear un nuevo proyecto En el navegador Web, apunta a la página web de App Inventor en http://beta.appinventor.mit.edu/ . Si esta es la primera vez que has usado App Inventor, verás la página de Proyectos vacía, sin proyectos en ella todavía. 2.  Crear un nuevo proyecto Haz clic en New en el lado izquierdo, cerca de la parte superior de la página. Introduce el nombre del proyecto HolaRonronea (una sola palabra, sin espacios) en el cuadro de diálogo que aparece, haga clic en Aceptar. El navegador abrirá el Diseñador, el lugar donde se seleccionan los componentes para su aplicación.

Page 62: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Queremos que HolaRonronea tenga un botón con la propiedad de imagen ajustada al archivo que has descargado antes, con la imagen de un gato, kitty.png. Estableceremos esto del modo siguiente: 1.  Arrastra y suelta un Button hasta Screen1, en el área del visor

(viewer). El componente Button se encuentra en la sección Basic de la paleta (palette).

2.  En la lista de propiedades de Button1, el botón que acabamos de disponer, en imagen, haz clic sobre ninguno (none) ...

3.  Haga clic en agregar (Add) ... .

4.  Selecciona el archivo kitty.png, que has descargado antes. 5.  Eliminar Text for Button1, que aparece bajo la propiedad

text mediante la tecla de retroceso.

Page 63: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Pasos a seguir para seleccionar los componentes y propiedades de configuración Queremos que HolaRonronea tenga un botón con la propiedad de imagen ajustada al archivo que has descargado antes, con la imagen del gato, kitty.png. Estableceremos esto del modo siguiente: Arrastra y suelta un Button hasta Screen1, en el área del visor (viewer). El componente Button se encuentra en la sección Basic de la paleta (palette). En la lista de propiedades de Button1, el botón que acabamos de disponer, en imagen, haz clic sobre ninguno (none) ... Haga clic en agregar (Add) ... . Selecciona el archivo kitty.png, que has descargado antes. Eliminar Text for Button1, que aparece bajo la propiedad text mediante la tecla de retroceso.

Page 64: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Tu diseño debería tener este aspecto

Page 65: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Preparando el emulador: En ese punto,y antes de continuar la construcción de la aplicación, tendrás que iniciar el emulador. Haz clic en el botón Nuevo emulador (New Emulator) en la parte superior de la ventana. Recibirás un aviso diciendo que el emulador se está iniciando, y te pide que tengas paciencia, ya que puede tardar un rato (cosas del Java). El emulador aparecerá inicialmente con una pantalla en negro. Espera hasta que el emulador esté listo, con un fondo de pantalla de color, como se muestra a continuación. Incluso después de que el fondo aparezca, debes esperar hasta que el teléfono emulado ha terminado la preparación de su tarjeta SD: verás un aviso en la parte superior de la pantalla del teléfono mientras la tarjeta está siendo preparada. Puede ser necesario usar el puntero del ratón sobre la pantalla del teléfono emulado para desbloquear el dispositivo, arrastrando el botón de bloqueo verde a la derecha.

Page 66: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Cuando el emulador está finalmente listo, haz clic en Conectar a dispositivo (Connect to device), selecciona el emulador de la lista desplegable y haz clic en él. Vas a ver una flecha amarilla animada sobre un móvil, indicando que App Inventor está conectándose al teléfono emulado. La creación de esta conexión puede tardar un minuto o dos. Cuando termine, la flecha dejará de moverse y se pone verde, y en la pantalla del teléfono emulado, verás el gatito. Abre el Editor de bloques (Blocks Editor), y conecta el teléfono El diseñador (Designer) es una de las tres herramientas clave que utilizarás en la creación de aplicaciones. El segundo es el Editor de bloques. El tercero es el teléfono. Vamos a usar el Editor de bloques para asignar los comportamientos de los componentes, como qué debe suceder cuando el usuario de la aplicación presiona un botón. El editor de bloques se ejecuta en una ventana separada. Al hacer clic en Abrir el editor de bloques (Open the Blocks Editor) de la ventana de diseño, el archivo de programa del editor de bloques se debe descargar y ejecutar. Este proceso puede tardar 30 segundos o más. Si no se abre el Editor de bloques, podría ser porque el navegador no está configurado para ejecutar aplicaciones Java descargadas de forma automática. Una vez descargado, veremos el archivo del editor de bloques, llamado AppInventorForAndroidCodeblocks.jnlp y debemos abrirlo.

Page 67: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Una vez hecho esto, se activa Java, que nos solicitará si queremos ejecutar la aplicación, a lo que responderemos que sí. Entonces, la ventana del editor de bloques debe verse como se muestra abajo, con "cajones" para los bloques de programa a la izquierda, y un gran espacio vacío para la colocación de los bloques que uniremos para montar el programa, que se va a hacer a continuación.

Page 68: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

En este punto, debes tener el diseñador abierto en el navegador, el editor de bloques abierto en otra ventana, y el dispositivo elegido (teléfono o emulador) conectado con el Editor de bloques. A continuación haremos lo siguiente para completar la aplicación: En el Diseñador: Agregar un componente de etiqueta (label) que ponga "Acaricia al gatito". Subir el archivo meow.mp3 Agregar un componente de sonido (sound) que reproduzca el archivo meow.mp3. En el Editor de bloques: Crear un controlador de eventos que dispare el componente de sonido cuando el usuario pulsa el botón. Adición de la etiqueta En la paleta y el visor: Arrastra y suelta el componente Label hasta el visor (Viewer) , situándolo por debajo del gatito. Aparecerá en la lista de componentes como Label1

Page 69: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

En este punto, debes tener el diseñador abierto en el navegador, el editor de bloques abierto en otra ventana, y el dispositivo elegido (teléfono o emulador) conectado con el Editor de bloques. A continuación haremos lo siguiente para completar la aplicación: En el Diseñador: Agregar un componente de etiqueta (label) que ponga "Acaricia al gatito". Subir el archivo meow.mp3 Agregar un componente de sonido (sound) que reproduzca el archivo meow.mp3. En el Editor de bloques: Crear un controlador de eventos que dispare el componente de sonido cuando el usuario pulsa el botón. Adición de la etiqueta En la paleta y el visor: Arrastra y suelta el componente Label hasta el visor (Viewer) , situándolo por debajo del gatito. Aparecerá en la lista de componentes como Label1

Page 70: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Bajo propiedades (properties): Cambia la propiedad Text de Label1 de forma que ponga "Acaricia al gatito". Cuando el cursos cambie a otra área verás aparecer este texto en el botón en tu ordenador y en el dispositivo Android. •  Cambiar el Color de fondo (BackgroundColor) de Label1. Puedes cambiar

a azul. •  Cambiar el color del texto (TextColor) de Label1, por ejemplo pasándolo a

amarillo. •  Cambiar el tamaño de su fuente (FontSize) de Label1 poniéndola a 30.

Page 71: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Agregando el maullido En la paleta (Palette): •  Haz clic en la sección Media para ampliarla y ver sus componentes. •  Arrastra un componente Sound y colócalo en el visor (Viewer) .

Independientemente de donde lo dejes caer, aparecerá en la parte inferior del visor, como componente no visible (non-visible-components) y como Sound1.

En el área de medios (Media): Haz clic en Agregar (Add) ...

•  Sube el archivo meow.mp3 a este proyecto.

Bajo Propiedades (Properties):

•  Establece la propiedad fuente (source) del componente Sound1 haciendo clic sobre la misma. Cuando aparezca el cuadro de selección, pulsa sobre meow.mp3 y sobre OK. Esto asocia el maullido contenido en este archivo a Sound1.

Page 72: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Hacer el juego de sonido Con el Editor de bloques vamos a definir la forma en que la aplicación se va a comportar. Le diremos a los componentes lo que deben hacer y cuándo hacerlo. Vas a decirle al botón, que en realidad es la fotografía del gatito, que reproduzca el sonido del maullido cuando el usuario lo toque. Si los componentes son los ingredientes de una receta, puedes pensar en bloques como las instrucciones de elaboración del plato. El editor de bloques tiene dos pestañas en la esquina superior izquierda: Integrados (Built-in) y mis bloques (My blocks) . Los botones situados debajo de cada pestaña muestran los bloques cuando se hace clic. Los Integrados son un conjunto de bloques genérico, que encontraremos disponibles independientemente de la aplicación que vayamos a crear. Son siempre los mismos. Los bloques debajo de la pestaña de mis bloques contienen bloques específicos, vinculados con el conjunto de componentes que hemos elegido para la aplicación. Varían según los componentes seleccionados previamente y cambian si cambiamos componentes sobre la marcha.

Page 73: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Hacer el juego de sonido Para hacer que se reproduzca el sonido al tocar (pulsar) el botón con la foto del gatito, tendrás que pulsar la pestaña My Blocks, desplegar los bloques de la sección Button1 y arrastrar y soltar al lienzo central el bloque When Button1.Click do, que se refiere a la circunstancia que el usuario pulse el botón y, tras desplegar los bloques de la sección Sound1, arrastrar el bloque callSound1.Play al lienzo central, aproximándolo al bloque When Button1.Click do, de modo que ambos encajen como en un rompecabezas, lo que la aplicación nos indica con un sonoro clic, perfectamente audible. Una vez hecho esto, pulsando sobre la foto (esto es tocando la pantalla en la foto y retirando el dedo rápidamente, lo que android considera un Click), oiremos como el teléfono emite el maullido.

Page 74: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

El Editor de bloques debe asemejarse a esto:

Page 75: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Embalaje de su aplicación Si está usando un teléfono, entonces la aplicación se ejecuta en el teléfono, pero sólo funciona cuando el teléfono está conectado a App Inventor. Si se desenchufa el cable USB, la aplicación va a desaparecer. Puedes volver a conectar el teléfono para hacer que regrese. Para obtener una aplicación que se ejecuta sin estar conectado a App Inventor, debes "empaquetar" la aplicación para producir un paquete de la aplicación (archivo APK). •  Al pulsar paquete para el teléfono (Package for phone) en la parte superior derecha

de la página del diseñador se presentarán tres opciones:

•  Si el teléfono está conectado, puedes descargar e instalar directamente la aplicación en el teléfono.

•  Puede descargar la aplicación al ordenador, como un archivo APK, que se puede distribuir y compartir, e instalar manualmente en los teléfonos que utilizan el programa Android.

Page 76: Taller Introductorio a Android

3.5.

Cre

ació

n ap

p co

n A

ppIn

vent

or Ejemplo de aplicación con AppInventor.

Conversión a JAVA para importarla con Eclipse: 1.  Descarga el fichero desde App Inventor

2.  Crear una carpeta con el mismo nombre que el proyecto (archivo .zip) (e.g. Project.zip => Project)

3.  Coloca el zip como entrada (input) y la carpeta como salida (output).

4.  Trataremos de importarla como proyecto en Eclipse.

Page 77: Taller Introductorio a Android

4 Creación de una aplicación para leer RSS

Page 78: Taller Introductorio a Android

Cre

ació

n de

la a

plic

ació

n C

AM

ON

Aplicación CAMON: Utilidad para lectura de datos RSS. Para la creación de la aplicación, seguiremos el tutorial Tutorial_LectorRSS_CAMON.pdf