Está en la página 1de 20

Android: Introducci on

Redes, Aplicaciones y Servicios en Internet (RASI)

Departamento de Sistemas Telem aticos y Computaci on (GSyC)

Octubre de 2009

GSyC - 2009

Android: Introducci on

c 2009 Grupo de Sistemas y Comunicaciones. Algunos derechos reservados. Este trabajo se distribuye bajo la licencia Creative Commons Attribution Share-Alike disponible en http://creativecommons.org/licenses/by-sa/2.1/es

GSyC - 2009

Android: Introducci on

Contenidos

Desarrollo de SW para m oviles La plataforma Android Creaci on y ejecuci on de un primer proyecto: Hello World Aplicaci on Todo List Depuraci on de aplicaciones en el emulador Bibliograf a

GSyC - 2009 Desarrollo de SW para m oviles

Android: Introducci on

Contenidos

Desarrollo de SW para m oviles La plataforma Android Creaci on y ejecuci on de un primer proyecto: Hello World Aplicaci on Todo List Depuraci on de aplicaciones en el emulador Bibliograf a

GSyC - 2009

Android: Introducci on

Desarrollo de SW para m oviles

Prehistoria

Primeros tel efonos: Motorola DynaTAC 8000X. 1983, > 1kg, > 3000euro, 30 bater a, tarifas prohibitivas, llamadas de voz y muy poco m as SW desarrollado por los fabricantes de terminales usando plataformas hw/sw cerradas, sin acceso para desarrolladores externos Se incorporan algunos juegos a los tel efonos Nokia Durante muchos a nos los fabricantes no estaban motivados para proporcionar mejores aplicaciones

GSyC - 2009 Desarrollo de SW para m oviles

Android: Introducci on

WAP
Capacidades del HW muy limitadas: microprocesadores poco potentes, poca memoria, pantallas peque nas de baja resoluci on Por ello se cre o WAP (Wireless Application Protocol) como versi on pobre de la Web (ej. WML vs HTML) Los fabricantes de m oviles pod an proporcionar una u nica aplicaci on, el navegador WAP, y otros el contenido Los operadores de telefon a m ovil pod an proporcionar portales con contenidos adaptados a WAP, y cobrar por el tr aco de datos Algunas apps WAP: Sitios Web de noticias, cat alogos de tonos de llamada y fondos de pantalla, proporcionados y pagados mediante MMS, WAP push La usabilidad de los navegadores WAP era muy deciente (WAP=Wait and Pay): los desarrolladores no pod an adaptar los contenidos a las capacidades del m ovil por lo que se usaba el m nimo com un Gran parte del contenido (tonos + pantallas) se distribuy o fuera de WAP: env as SMS y recibes el contenido pedido. Operador y proveedor de contenidos contentos por el (alto) importe recibido Los portales, controlados por el operador, no permit an navegar libremente m as que por los contenidos controlados por el operador Tuvo un exito muy limitado: WAP s olo triunf o en Jap on

GSyC - 2009

Android: Introducci on

Desarrollo de SW para m oviles

Plataformas de desarrollo propietarias


Mientras tanto: Nintendo Game Boy, c amaras de fotos digitales, reproductores como el iPod, PDAs Palm, ... se predice una convergencia de dispositivos Se abarata la memoria, las bater as duran m as Linux y Windows empiezan a usarse en m oviles, abriendo el camino a desarrolladores externos Los fabricantes de terminales empiezan a exponer parte de la funcionalidad en los entornos de desarrollo La existencia de varias plataformas fragmenta el mercado de aplicaciones: Palm OS, RIM Blackberry OS, J2ME (ahora Java ME), Windows Mobile de Microsoft, BREW de QualComm, Symbian OS de Nokia (y otros), MacOS X para iPhone (2008) Cada plataforma tiene diferente penetraci on seg un los mercados y segmentos de poblaci on Los fabricantes y operadores est an obligados a proporcionar varias plataformas (a veces en un mismo terminal: Symbian + J2ME) Estas plataformas se caracterizan por estar restringida la funcionalidad disponible para desarrolladores, y por tener que pagar para poder desarrollar Dif cil desarrollar para varias plataformas: herramientas, lenguaje de programaci on, bibliotecas, ... se necesita el equivalente al IBM PC para los m oviles

GSyC - 2009 Desarrollo de SW para m oviles

Android: Introducci on

Open Handset Alliance (OHA)


Entrada de Google en la telefon a m ovil Objetivo: cambiar c omo se desarrollan las aplicaciones en el sector de la telefon a m ovil, facilitando el acceso a aplicaciones y servicios OHA: empresas operadoras (Telefonica, Vodafone, China Unicom, DOCOMO,...), frabricantes de chips (Intel, Qualcomm, Texas Instruments, NVDIA) y terminales (Motorola, HTC, Asus, Acer, Garmin, Sony Ericsson, Toshiba, LG), desarrolladoras (distribuyendo apps a trav es de Android Market),... y Google OHA (Google) produjo Android: the rst complete, open, and free mobile platform

GSyC - 2009

Android: Introducci on

Desarrollo de SW para m oviles

Situaci on actual de la industria (1/2)

Interesante momento de cambio en la industria de la telefon a m ovil y de la inform atica en general Los usuarios de m oviles demandan m as funcionalidad Existen el HW y SW necesarios. Los operadores quieren proporcionar valor a nadido a los usuarios, una vez que han saturado el mercado (hay m as l neas m oviles que habitantes en Espa na). Aparecen tarifas planas de datos a precios no tan abusivos en Espa na! Los desarrolladores quieren proporcionar aplicaciones de manera m as directa a los usuarios: el modelo del AppStore de Apple ha funcionado

GSyC - 2009 Desarrollo de SW para m oviles

Android: Introducci on

Situaci on actual de la industria (2/2)


Los fabricantes de terminales buscan plataformas SW estables, seguras, econ omicas Los fabricantes de microprocesadores (Intel, AMD) han saturado el mercado desktop y compiten ahora en el de subnotebooks y m oviles con ARM, QualComm,... Impacto de iPhone debido a: interfaz de usuario, pantalla 2.8 480x320, asociado a tarifa plana de datos, pantalla grande con resoluci on, GPS, aceler ometros, magnet ometros, usabilidad,... AppStore Android tambi en ha sacudido la industria: Nokia est a liberando Symbian y potencia Maemo, LiMo Foundation proporciona una plataforma alternativa a OHA Android, ...

GSyC - 2009

Android: Introducci on

10

La plataforma Android

Contenidos

Desarrollo de SW para m oviles La plataforma Android Creaci on y ejecuci on de un primer proyecto: Hello World Aplicaci on Todo List Depuraci on de aplicaciones en el emulador Bibliograf a

GSyC - 2009 La plataforma Android

Android: Introducci on

11

Caracter sticas (1/2)


Plataforma completa: desde el SO (Linux) hasta el framework y las aplicaciones Para desarrollar no hay que pagar y las herramientas de desarrollo no son costosas: Android SDK programado en Java, Eclipse IDE, pudi endose compilar en Windows, MacOS, Linux Open Source: GNU General Public Licence Version 2(GPLv2) para el kernel (las modicaciones/extensiones han de seguir siendo GPLv2), Apache Software License (ASL/Apache2) para el framework (se permiten modicaciones/extensiones propietarias, cualquiera para aplicaciones) En Android no hay diferencia entre aplicaciones nativas y de terceros: hasta ahora en otras plataformas hab a acuerdos con empresas desarrolladoras privilegiadas a las que se les daba acceso a APIs no disponibles para los dem as
GSyC - 2009 Android: Introducci on 12

La plataforma Android

Caracter sticas (2/2)


Las aplicaciones est an integradas: una sesi on t pica con el m ovil implica usar varias aplicaciones: sms + agenda + llamada + c amara + correo-e + browser. Es necesario que haya un ujo entre las aplicaciones, que est en integradas para que la experiencia del usuario sea buena No hay obst aculos a la publicaci on de aplicaciones como ocurr a p.ej. en Symbian (proceso costoso de pruebas y certicaci on) o con las aplicaciones para iPhone Algunas pegas debidas a la inmadurez y r apido crecimiento: cambios en SDK, falta de buena documentaci on, dudas sobre el mercado, s olo unos cuantos modelos de terminales disponibles (unos 5 en Espa na en octubre 2009, el primero disponible en EE.UU. hace exactamente 1 a no)

GSyC - 2009 La plataforma Android

Android: Introducci on

13

Canales de distribuci on de aplicaciones Android

Los desarrolladores pueden utilizar cualquier tipo de modelo de negocio: freeware, shareware, trialware, pagadas con inserci on de anuncios, de pago. Se huye de lo habitual en el sector: limitaci on del n umero de aplicaciones parecidas, limitaci on de precios y modelos de venta de aplicaciones, imposibilidad de satisfacer nichos de aplicaciones porque el operador no estaba interesado. Con Android se puede utilizar Android Market para distribuir (con benecios compartidos entre Google y el desarrollador), u otros canales como Handango.com, tiendas de operadoras o canales propios. No est a limitado.

GSyC - 2009

Android: Introducci on

14

La plataforma Android

Qu e es Android? (1/3)

GSyC - 2009 La plataforma Android

Android: Introducci on

15

Qu e es Android? (2/3)
Denici on ocial de Google: The rst truly open and comprehensive platform for mobile devices, all of the software to run a mobile phone but without the proprietary obstacles that have hindered mobile innovation. Dise no de referencia de los requisitos hw que debe tener un dispositivo para poder correr la pila de software Android Kernel Linux optimizado para m oviles que proporciona interfaz con HW, gesti on de memoria, y control de procesos Bibliotecas para desarrollo de aplicaciones: SQLite, WebKit, OpenGL, gestor multimedia, libc Run time para ejecutar aplicaciones Android: m aquina virtual Dalvik y bibliotecas Java
GSyC - 2009 Android: Introducci on 16

La plataforma Android

Qu e es Android? (3/3)
Framework de desarrollo de aplicaciones que expone los servicios del sistema mediante APIs Java a las aplicaciones: window manager, proveedores de contenido, gestor de localizaci on, telefon a, servicios p2p, aceler ometros/magnet ometro, Posibilidad de hacer/recibir llamadas y enviar/recibir datos (GSM, EDGE, 3G), Wi-Fi, Bluetooth Aplicaciones nativas programadas en Java que vienen con la pila de SW Android: cliente correo-e, aplicaci on SMS, PIM (Personal Information Management) integrado con servicios Google, Google Maps, Browser basado en webkit, cliente Instant Message, reproductor de m usica, fotograf as y v deos Youtube, Cliente Android Marketplace,...
Los datos que almacenan las aplicaciones (ej. contactos) pueden ser accedidos por otras aplicaciones. Las llamadas y SMS pueden ser procesadas por otras aplicaciones.

SDK, herramientas (debug, emulador), plug-in Eclipse, docs


GSyC - 2009 La plataforma Android Android: Introducci on 17

Framework de desarrollo de aplicaciones


Las aplicaciones Android se escriben en Java, pero se ejecutan sobre una m aquina virtual Dalvik, distinta a Java VM (.dex, no .class), optimizada para m oviles. Cada aplicaci on Android corre en un proceso separado, con su propia instancia de Dalvik.
Cuando se instala una aplicaci on el SO crea un perl de nuevo usuario asociado a la aplicaci on. Cada aplicaci on corre como un usuario diferente, con sus propios cheros en el sistema de cheros, y un id de usuario distinto Para acceder a recursos protegidos las aplicaciones tienen que declarar los privilegios requeridos (ej. hacer llamadas, acceder a la red, a c amara, a sensores, localizaci on, datos personales de las aplicaciones PIM...) A su vez las aplicaciones pueden especicar el nivel de acceso que ofertan para los datos que ellas gestionan

Toda la gesti on de memoria y de procesos la lleva a cabo el run time, que suspende y mata procesos sin posibilidad de intervenir desde las aplicaciones El kernel Linux se encarga de la protecci on (seguridad y permisos) de las aplicaciones, gesti on de memoria de bajo nivel, gesti on de procesos y threads, SW de red, pantalla, teclado, c amara, WiFi, memoria Flash, audio En Android 1.5 se pas o de la versi on 2.6.25 del kernel a la 2.6.27
GSyC - 2009 Android: Introducci on 18

La plataforma Android

Arquitectura de una aplicaci on Android


En Android se promueve la reutilizaci on de componentes entre aplicaciones distintas en tiempo de compilaci on y de ejecuci on: se puede proporcionar un nuevo componente de agenda o de marcaci on del tlf. que substituya a los existentes Principales componentes:
Gestor de Actividades: gestiona el ciclo de vida de las actividades (cada uno de los componentes visuales de la aplicaci on) Vistas: utilizadas para construir el GUI de las actividades Gestor de Noticaciones: comunicaci on con el usuario Proveedores de Contenidos: permite que la aplicaciones compartan datos Gestor de Recursos: permite utilizar recursos distintos del c odigo externamente a la aplicaci on (strings, gr acos,...)

GSyC - 2009 Creaci on y ejecuci on de un primer proyecto: Hello World

Android: Introducci on

19

Contenidos

Desarrollo de SW para m oviles La plataforma Android Creaci on y ejecuci on de un primer proyecto: Hello World Aplicaci on Todo List Depuraci on de aplicaciones en el emulador Bibliograf a

GSyC - 2009

Android: Introducci on

20

Creaci on y ejecuci on de un primer proyecto: Hello World

Pasos para la creaci on y ejecuci on del proyecto Hello World


1) Crear un proyecto para la primera aplicaci on: Se crear a autom aticamente un proyecto que no est a vac o: imprime una cadena de texto cuando arranca la aplicaci on. Seleccionar File New Project Seleccionar el wizard Android Project en la carpeta Android Pulsar Next. Rellenar los datos siguientes:
Project Name: Hello World Build Target: Android 1.5 Application Name: Hello World Package Name: com.rasi.helloworld Create Activity: HelloWorld

Pulsar Next, pulsar Finish. 2) Crear la conguraci on de ejecuci on para este proyecto: Se pueden crear varias conguraciones de ejecuci on, y conguraciones de depuraci on. Creamos una conguraci on de ejecuci on: Seleccionar Run Run Congurations Pulsar con el bot on derecho sobre Android Application y seleccionar New. Rellenar los datos siguientes:
Name: Hello World Project: Hello World

Pulsar la pesta na Target Pulsar Manager... Pulsar New para crear un nuevo Android Virtual Device (AVD). Rellenar los siguientes datos
Name: MyAndroid Target: Android 1.5 - API Level 3

Pulsar Create AVD y esperar a que una ventana conrme la creaci on Cerrar la ventana Android SDK Esperar a que en el panel aparezca el nuevo AVD con nombre MyAndroid Activar la casilla del AVD MyAndroid, pulsar Apply, pulsar Close. 3) Ejecutar la aplicaci on: Se puede pulsar directamente el bot on Run, o hacerlo a trav es de una de las conguraciones de ejecuci on preexistentes: Seleccionar la conguraci on de ejecuci on Hello World reci en creada en Run Run Congurations

GSyC - 2009 Creaci on y ejecuci on de un primer proyecto: Hello World

Android: Introducci on

21

Pasos para la creaci on y ejecuci on


Cuando desde Eclipse, con el plugin de Android instalado, se ejecuta una aplicaci on a trav es de una conguraci on de ejecuci on o de depuraci on, Eclipse hace lo siguiente:
1

3 4 5

Compila la aplicaci on, generando un ejecutable para dalvik (.dex) Empaqueta el ejecutable y otros recursos externos en un paquete Android (.apk) Arranca el emulador (si no estaba ya arrancado) Instala el paquete de la aplicaci on (.apk) en el emulador Arranca la aplicaci on en el emulador

Si se utiliza una conguraci on de depuraci on el depurador de Eclipse se conecta a la aplicaci on, pudi endose depurar entonces desde la perspectiva de depuraci on de Eclipse

GSyC - 2009

Android: Introducci on

22

Creaci on y ejecuci on de un primer proyecto: Hello World

Carpetas y cheros generados para un proyecto


Ficheros Android AndroidManifest.xml Descripci on Fichero que describe la aplicaci on: permisos, capacidades que exporta, c omo correr a. Fichero generado autom aticamente. Dene c omo construir la aplicaci on. C odigo fuente de la aplicaci on. Fichero con el c odigo de la Activity HelloWorld de esta aplicaci on. Es el punto de entrada a la aplicaci on. Carpeta en la que se almacenan cheros relacionados con recursos autogenerados. Fichero fuente para manejar recursos desde la aplicaci on: no debe modicarse. Recursos de la aplicaci on: animaciones, im agenes, cheros de layout, cheros XML, strings, y otros cheros. Icono de la aplicaci on que se muestra en el lanzador de aplicaciones del tel efono. Fichero XML que dene el layout. Fichero XML con los Strings de la aplicaci on.

default.properties Carpeta src src/com.rasi.helloworld/ HelloWorld.java Carpeta gen

gen/com.rasi.helloworld/ R.java Carpeta res

res/drawable/icon.png

res/layout/main.xml res/values/strings.xml

GSyC - 2009 Creaci on y ejecuci on de un primer proyecto: Hello World

Android: Introducci on

23

Explicaci on de la aplicaci on Hello World


Actividad HelloWorld (src/com.rasi.helloworld/HelloWorld.java) 1 package com . r a s i . h e l l o w o r l d ; 3 import a n d r o i d . app . A c t i v i t y ; import a n d r o i d . o s . B u n d l e ; 5 p u b l i c c l a s s H e l l o W o r l d extends A c t i v i t y { 7 / C a l l e d when t h e a c t i v i t y i s f i r s t c r e a t e d . / @Override 9 p u b l i c void onCreate ( Bundle s a v e d I n s t a n c e S t a t e ) { super . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 11 s e t C o n t e n t V i e w (R . l a y o u t . main ) ; } 13 } En la l nea 6 (l-6) se extiende la clase Activity, clase utilizada en una aplicaci on para soportar tareas que requieren una interfaz gr aca El punto de entrada es el m etodo onCreate(), que se redene (l-9) En el c odigo Java no vemos ni el string ni la View (el componente visual que se utiliza para mostrarlo en pantalla): se han denido como recursos externos En l-11 se ina la interfaz gr aca a partir de los recursos denidos en el chero res/layout/main.xml
GSyC - 2009 Android: Introducci on 24

Creaci on y ejecuci on de un primer proyecto: Hello World

Recursos de la aplicaci on Hello World


Denir en XML los aspectos visuales permite desacoplarlos de la l ogica de la aplicaci on Los recursos est an en la carpeta res del proyecto, con subcarpetas drawable, layout y values Desde el programa se puede acceder a los recursos externos a trav es de la variable R El chero res/layout/main.xml dene el layout de la vista de la actividad: res/layout/main.xml
1 3 5 7 9 11 <? xml v e r s i o n = 1 . 0 e n c o d i n g= u t f 8 ?> < L i n e a r L a y o u t x m l n s : a n d r o i d= h t t p : // s ch emas . a n d r o i d . com/ apk / r e s / a n d r o i d a n d r o i d : o r i e n t a t i o n= v e r t i c a l a n d r o i d : l a y o u t w i d t h= f i l l p a r e n t a n d r o i d : l a y o u t h e i g h t= f i l l p a r e n t > <TextView a n d r o i d : l a y o u t w i d t h= f i l l p a r e n t a n d r o i d : l a y o u t h e i g h t= w r a p c o n t e n t a n d r o i d : t e x t= @ s t r i n g / h e l l o /> </ L i n e a r L a y o u t>

En la l-9 de main.xml se referencia un string denido en la l-3 de res/values/strings.xml: res/values/strings.xml


1 3 5 <? xml v e r s i o n = 1 . 0 e n c o d i n g= u t f 8 ?> < r e s o u r c e s> < s t r i n g name= h e l l o > H e l l o World , H e l l o W o r l d !</ s t r i n g> < s t r i n g name= app name > H e l l o World</ s t r i n g> </ r e s o u r c e s>

GSyC - 2009 Creaci on y ejecuci on de un primer proyecto: Hello World

Android: Introducci on

25

Identicaci on de recursos de la aplicaci on Hello World


Para acceder a los elementos de la interfaz en el c odigo se pueden a nadir atributos id en XML (ver l-3):
res/layout/main.xml (modicado respecto al original) 1 3 5 7 ... <TextView a n d r o i d : i d= @+i d / myTextView a n d r o i d : l a y o u t w i d t h= f i l l p a r e n t a n d r o i d : l a y o u t h e i g h t= w r a p c o n t e n t a n d r o i d : t e x t= H e l l o World , H e l l o W o r l d /> ...

Luego, desde el c odigo Java se podr a utilizar el m etodo findViewById para obtener una referencia al elemento cuyo id se ha denido en la l-3:
HelloWorld.java (modicado respecto al original) ... TextView myTextView = ( TextView ) f i n d V i e w B y I d (R . i d . myTextView ) ; ...

GSyC - 2009

Android: Introducci on

26

Creaci on y ejecuci on de un primer proyecto: Hello World

HelloWorld sin la interfaz denida externamente en los recursos


Alternativamente se podr an crear los elementos gr acos de la actividad HelloWorld en Java (no recomendado): HelloWorld.java (modicado respecto al original) 1 3 5 7 9 11 13 15 p u b l i c v o i d o n C r e a t e ( B un d l e s a v e d I n s t a n c e S t a t e ) { super . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; L i n e a r L a y o u t . LayoutParams l p ; l p = new L i n e a r L a y o u t . LayoutParams ( LayoutParams . FILL PARENT , LayoutParams . FILL PARENT ) ; L i n e a r L a y o u t . LayoutParams t e x t V i e w L P ; t e x t V i e w L P = new L i n e a r L a y o u t . LayoutParams ( LayoutParams . FILL PARENT , LayoutParams .WRAP CONTENT ) ; L i n e a r L a y o u t l l = new L i n e a r L a y o u t ( t h i s ) ; l l . s e t O r i e n t a t i o n ( L i n e a r L a y o u t . VERTICAL ) ; TextView myTextView = new TextView ( t h i s ) ; myTextView . s e t T e x t ( H e l l o World , H e l l o W o r l d ) ; l l . addView ( myTextView , t e x t V i e w L P ) ; t h i s . a d d C o nt e n t V i e w ( l l , l p ) ; }
Android: Introducci on Aplicaci on Todo List 27

GSyC - 2009

Contenidos

Desarrollo de SW para m oviles La plataforma Android Creaci on y ejecuci on de un primer proyecto: Hello World Aplicaci on Todo List Depuraci on de aplicaciones en el emulador Bibliograf a

GSyC - 2009

Android: Introducci on

28

Aplicaci on Todo List

Aplicaci on Todo List


Esta aplicaci on har a uso de varias Views (elementos de la interfaz gr aca como listas, cajas de texto, ...). Descripci on de la interfaz: en una caja de texto se pueden introducir nuevos elementos, que pasan a la lista que hay abajo cuando se pulsa el bot on central del m ovil:

GSyC - 2009 Aplicaci on Todo List

Android: Introducci on

29

Aplicaci on Todo List


1 2

Creamos un nuevo proyecto: Todo_List, con una actividad ToDoList, y creamos una Conguraci on de ejecuci on. Modicamos el layout para que incluya 2 Views predenidas en Android: EditText y ListView:

res/layout/main.xml <? xml v e r s i o n = 1 . 0 e n c o d i n g= u t f 8 ?> 2 < L i n e a r L a y o u t x m l n s : a n d r o i d= h t t p : // schemas . a n d r o i d . com/ apk / r e s / a n d r o i d a n d r o i d : o r i e n t a t i o n= v e r t i c a l 4 a n d r o i d : l a y o u t w i d t h= f i l l p a r e n t a n d r o i d : l a y o u t h e i g h t= f i l l p a r e n t > 6 <E d i t T e x t a n d r o i d : i d= @+i d / myEditText 8 a n d r o i d : l a y o u t w i d t h= f i l l p a r e n t a n d r o i d : l a y o u t h e i g h t= w r a p c o n t e n t 10 a n d r o i d : t e x t= New To Do I t e m /> 12 <L i s t V i e w a n d r o i d : i d= @+i d / m y L i s t V i e w 14 a n d r o i d : l a y o u t w i d t h= f i l l p a r e n t a n d r o i d : l a y o u t h e i g h t= w r a p c o n t e n t 16 /> </ L i n e a r L a y o u t>

GSyC - 2009

Android: Introducci on

30

Aplicaci on Todo List

Aplicaci on Todo List


Todo List.java 1 3 5 7 9 11 13 15 17 // Get r e f e r e n c e s t o UI w i d g e t s L i s t V i e w m y L i s t V i e w = ( L i s t V i e w ) f i n d V i e w B y I d (R . i d . m y L i s t V i e w ) ; f i n a l E d i t T e x t m y E d i t T e x t = ( E d i t T e x t ) f i n d V i e w B y I d (R . i d . m y E d i t T e x t ) ; package com . r a s i . t o d o l i s t ; import import import import import java . u t i l . ArrayList ; a n d r o i d . os . Bundle ; a n d r o i d . v i e w . View ; android . widget . ArrayAdapter ; android . widget . ListView ; import import import import android android android android . app . A c t i v i t y ; . v i e w . KeyEvent ; . v i e w . View . O n K e y L i s t e n e r ; . widget . EditText ;

p u b l i c c l a s s ToDoList extends A c t i v i t y { / C a l l e d when t h e a c t i v i t y i s f i r s t c r e a t e d . / @Override p u b l i c void onCreate ( Bundle s a v e d I n s t a n c e S t a t e ) { super . onCreate ( savedInstanceState ) ; s e t C o n t e n t V i e w (R . l a y o u t . main ) ;

20 22 24 26 28

// C r e a t e t h e a r r a y l i s t o f t o do i t e m s f i n a l A r r a y L i s t <S t r i n g > t o d o I t e m s = new A r r a y L i s t <S t r i n g > (); // C r e a t e t h e a r r a y a d a p t e r t o b i n d t h e a r r a y t o t h e l i s t v i e w f i n a l A r r a y A d a p t e r <S t r i n g > aa ; aa = new A r r a y A d a p t e r <S t r i n g >( t h i s , android .R. layout . s i m p l e l i s t i t e m 1 , todoItems ) ; // Bind t h e a r r a y a d a p t e r t o t h e l i s t v i e w m y L i s t V i e w . s e t A d a p t e r ( aa ) ;

30 32 34 36 38 40

// A new O n K e y L i s t e n e r i s added t o m y E d i t T e x t t h a t w i l l be c a l l e d bac k // when t h e D pad c e n t e r b u t t o n i s p r e s s e d m y E d i t T e x t . s e t O n K e y L i s t e n e r ( new O n K e y L i s t e n e r ( ) { p u b l i c b o o l e a n onKey ( View v , i n t keyCode , KeyEvent e v e n t ) { i f ( e v e n t . g e t A c t i o n ( ) == KeyEvent . ACTION DOWN) i f ( keyCode == KeyEvent . KEYCODE DPAD CENTER) { // Copy t h e t e x t i n m y E d i t T e x t t o t h e l i s t View by a d d i n g // i t t o t h e t o d o I t e m s a r r a y L i s t t o d o I t e m s . add ( 0 , m y E d i t T e x t . g e t T e x t ( ) . t o S t r i n g ( ) ) ; aa . n o t i f y D a t a S e t C h a n g e d ( ) ; // N o t i f y t h e aa A r r a y A d a p t e r

42 myEditText . s e t T e x t ( ) ; 44 46 48 50 } } } }); return true ; } return false ; // F i n a l l y , empty t h e E d i t T e x t box

GSyC - 2009 Aplicaci on Todo List

Android: Introducci on

31

Aplicaci on Todo List


Todo List.java (1/3) package com . r a s i . t o d o l i s t ; 2 import j a v a . u t i l . A r r a y L i s t ; import a n d r o i d . app . A c t i v i t y ; 4 import a n d r o i d . o s . B und l e ; import a n d r o i d . v i e w . KeyEvent ; import a n d r o i d . v i e w . View ; import a n d r o i d . v i e w . View . O n K e y L i s t e n e r ; 6 import a n d r o i d . w i d g e t . A r r a y A d a p t e r ; import a n d r o i d . w i d g e t . E d i t T e x t ; import a n d r o i d . w i d g e t . L i s t V i e w ; 8 p u b l i c c l a s s ToDoList extends A c t i v i t y { 10 / C a l l e d when t h e a c t i v i t y i s f i r s t c r e a t e d . / @Override 12 p u b l i c v o i d o n C r e a t e ( B un dl e s a v e d I n s t a n c e S t a t e ) { super . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; 14 s e t C o n t e n t V i e w (R . l a y o u t . main ) ; 16 18 // Get r e f e r e n c e s t o UI w i d g e t s L i s t V i e w m y L i s t V i e w = ( L i s t V i e w ) f i n d V i e w B y I d (R . i d . m y L i s t V i e w ) ; f i n a l E d i t T e x t myEditText = ( E d i t T e x t ) f i n d V i e w B y I d (R . i d . myEditText ) ;

GSyC - 2009

Android: Introducci on

32

Aplicaci on Todo List

Aplicaci on Todo List


Todo List.java (2/3) 20 22 24 26 28 // C r e a t e t h e a r r a y l i s t o f t o do i t e m s f i n a l A r r a y L i s t < S t r i n g > t o d o I t e m s = new A r r a y L i s t < S t r i n g > ( ) ; // C r e a t e t h e a r r a y a d a p t e r t o b i n d t h e a r r a y t o t h e l i s t v i e w f i n a l A r r a y A d a p t e r < S t r i n g > aa ; aa = new A r r a y A d a p t e r < S t r i n g >( t h i s , android .R. layout . s i m p l e l i s t i t e m 1 , todoItems ) ; // Bind t h e a r r a y a d a p t e r t o t h e l i s t v i e w m y L i s t V i e w . s e t A d a p t e r ( aa ) ;

GSyC - 2009 Aplicaci on Todo List

Android: Introducci on

33

Aplicaci on Todo List


Todo List.java (3/3) 30 32 34 36 38 40 aa . n o t i f y D a t a S e t C h a n g e d ( ) ; // N o t i f y t h e aa A r r a y A d a p t e r 42 myEditText . s e t T e x t ( ) ; 44 46 48 50 } } } }); return true ; } return f a l s e ; // F i n a l l y , empty t h e E d i t T e x t box // A new O n K e y L i s t e n e r i s added t o myEditText t h a t w i l l be c a l l e d back // when t h e Dpad c e n t e r b u t t o n i s p r e s s e d myEditText . s e t O n K e y L i s t e n e r ( new O n K e y L i s t e n e r ( ) { p u b l i c boolean onKey ( View v , i n t keyCode , KeyEvent e v e n t ) { i f ( e v e n t . g e t A c t i o n ( ) == KeyEvent . ACTION DOWN) i f ( keyCode == KeyEvent . KEYCODE DPAD CENTER) { // Copy t h e t e x t i n myEditText t o t h e l i s t View by a d d i n g // i t t o t h e t o d o I t e m s a r r a y L i s t t o d o I t e m s . add ( 0 , myEditText . g e t T e x t ( ) . t o S t r i n g ( ) ) ;

GSyC - 2009

Android: Introducci on

34

Depuraci on de aplicaciones en el emulador

Contenidos

Desarrollo de SW para m oviles La plataforma Android Creaci on y ejecuci on de un primer proyecto: Hello World Aplicaci on Todo List Depuraci on de aplicaciones en el emulador Bibliograf a

GSyC - 2009 Depuraci on de aplicaciones en el emulador

Android: Introducci on

35

Las perspectivas de Eclipse para depuraci on


Para depurar se selecciona una conguraci on preexistente en el men u Run Debug Congurations. Tambi en puedes pulsar directamente el bot on de depuraci on (dibujo de un bug) Eclipse tiene varias perspectivas, cada una con diferentes paneles. La perspectiva por omisi on es la de Java. Arriba a la derecha aparecen botones para acceder a otras perspectivas, como la de depuraci on, en la que se pueden poner puntos de parada (breakpoints ), ver la informaci on de Log (LogCat) y depurar (ejecuci on paso a paso,...) Hay otra perspectiva: DDMS (Dalvik Debug Monitor Service) permite monitorizar y manipular el estado del emulador (procesos arrancados en el emulador p.ej.)

GSyC - 2009

Android: Introducci on

36

Depuraci on de aplicaciones en el emulador

Ejercicio de depuraci on
En el proyecto Todo_List edita el chero ToDoList.java y crea un nuevo m etodo en la clase ToDoList: public void f o r c e E r r o r ( ) { i f ( true ) { throw new E r r o r ( E r r o r g e n e r a d o a d r e d e ) ; } } A nade una llamada a forceError() en alg un lugar del c odigo (por ejemplo cuando se va a a nadir un elemento en la lista, tras haber pulsado el bot on del tel efono). Ejecuta la aplicaci on: se producir a una excepci on en el lugar en el que hayas incluido esta llamada, y la aplicaci on en el emulador parar a con un mensaje en pantalla. Depura la aplicaci on: para depurar se selecciona una conguraci on preexistente en el men u Run Debug Congurations. Tambi en puedes pulsar directamente el bot on de depuraci on (dibujo de un bug) Aparecer a un mensaje en Android para pasar a la perspectiva de depuraci on Desde la perspectiva de depuraci on se puede observar en el panel LogCat este mensaje (dentro del LogCat, mira el ltro que tiene un E en rojo): AndroidRuntime error: java.lang.Error: Error generado adrede A nade ahora un breakpoint en la l nea desde la que llamas a forceError(): con el bot on derecho pulsa en la columna de la izda. de la l nea Vuelve a depurar. Cuando la ejecuci on pare en el breakpoint, ejecuta paso a paso hasta llegar a la l nea que lanza la excepci on. Puedes ver el contenido de la excepci on en el panel de Variables de la perspectiva de depuraci on
GSyC - 2009 Depuraci on de aplicaciones en el emulador Android: Introducci on 37

Generaci on de mensajes en LogCat


En el panel LogCat aparecen mensajes informativos. Hay varios ltros representados por c rculos arriba a la derecha. Desde la aplicaci on se pueden generar mensajes de logging utilizando la clase android.util.Log: M etodo Prop osito Log.e() Log errors Log.w() Log warnings Log.i() Log informational messages Log.d() Log Debug messages Log.v() Log Verbose messages Ejercicio A nade a ToDoList.java la siguiente l nea: import android.util.Log; A nade a la clase este String: private static final String DEBUG_TAG= "ToDoList"; A nade llamadas del tipo Log.i(DEBUG_TAG, "Testing informational message 1 "); Corre la aplicaci on y busca el el panel del LogCat (ltro I) tus mensajes

GSyC - 2009

Android: Introducci on

38

Bibliograf a

Contenidos

Desarrollo de SW para m oviles La plataforma Android Creaci on y ejecuci on de un primer proyecto: Hello World Aplicaci on Todo List Depuraci on de aplicaciones en el emulador Bibliograf a

GSyC - 2009 Bibliograf a

Android: Introducci on

39

Bibliograf a
Cap tulos 1 y 2 de Professional Android Application Development. Reto Meier. Ed. Wrox, 2009. Cap tulos 1 y 2 de Wireless Android Application Development. Shane Conder, Lauren Darcey. Ed. Addison Wesley Professional, 2009. Documentaci on del Android SDK: en la carpeta docs del directorio del SDK, o en http://developer.android.com/guide/index.html Documentaci on sobre Android (tutoriales, v deos,...): http://developer.android.com Hay instrucciones para la instalaci on del SDK de Android y de Eclipse en la p agina web de la asignatura

GSyC - 2009

Android: Introducci on

40

También podría gustarte