Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
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
Android: Introducci on
GSyC - 2009
Android: Introducci on
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
Android: Introducci on
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
Android: Introducci on
11
La plataforma Android
Android: Introducci on
13
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)
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.
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
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
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
Android: Introducci on
21
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
res/drawable/icon.png
res/layout/main.xml res/values/strings.xml
Android: Introducci on
23
Android: Introducci on
25
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
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
Android: Introducci on
29
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
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
Android: Introducci on
31
GSyC - 2009
Android: Introducci on
32
Android: Introducci on
33
GSyC - 2009
Android: Introducci on
34
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
Android: Introducci on
35
GSyC - 2009
Android: Introducci on
36
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
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
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