Los mejores trucos, las mejores fotos y muchos consejos para los aficionados a la fotografía digital.Descripción completa
El Gran Libro de Fotografia de Retrato
El Gran Libro de Fotografia de Retrato
Descripción completa
Descripción completa
Descripción: es un excelente libro, para aprender todo lo relacionado con el huevo, desde sus estructura, composición química hasta sus aplicaciones en diferentes áreas de alimentos
radiestesia
Los mejores trucos, las mejores fotos y muchos consejos para los aficionados a la fotografía digital.Full description
Descripción: cocina
-
-
-
-~-
El gran libro de Android El
gran
libro
de
Android
Jc&ú& Tomó~ Tomás Gironé~ Gironés ----------Je~ú~
22 22 Edición Edición
AAifaomega
A Alfaomega
marcombo ediciones técnicas edicion e s técnicas
t·
1
El gran gran libro libro de de Android Androíd El Jesús Tomás Gironés Tomás Gironés Jesús
El gran gran libro El libro de de Android Android Jesús Tomás Gironés Gironés Jesús Tomás
Pág.. Web: http://wwwailfaomega.com.mx http://www.alfaomega.com.mx Pág [email protected] E-mail : [email protected] E-mail: ISBN: 978-607-707-506-6 Derechos reservados: lengua en lengua publicación en de publicación derechos de los derechos autor yy los su autor de su intelectual de Esta obra es propiedad intelectual total parcialoototal reproducción parcial su reproducción Prohibida su editor. Prohibida al editor. transferidos al española han sido legalmente legalmente transferidos copyright. delcopyright. derechosdel losderechos de los propietariode del propietario escrito del por escrito permiso por por cualquier medio sin permiso
Nota importante: tanto, porlolotanto, didáctico y,y,por exclusivamente didáctico fin exclusivamente un fin tiene un obra tiene esta obra en esta La información contenida en indicaciones Las indicaciones industrial. Las profesional oo industrial. nivel profesional no está previsto su aprovechamiento aprovechamiento aa nivel autor yy por elel autor cuidado por gran cuidado con gran elaborados con sido elaborados han sido incluidos, han técnicas y programas incluidos, de S.A . de EDITOR , SA. GRUPO EDITOR, ALFAOMEGA GRUPO control. ALFAOMEGA de control. normas de reproducidos bajo estrictas estrictas normas que sese perjuiciosque daños yy perjuicios omisiones; daños errores uu omisiones; por: errores responsable por: jurídicamente responsable C .V. no será jurídicamente C.V. utilización por lala utilización libro, nini por este libro, en este comprendida en información comprendida la información de la pudieran atribuir al uso uso de indebida que pudiera dársele. dársele. Mexico. in México. Impreso en México. Printed in
Empresas del grupo: 03100. C.P.03100. D.F.México,D.E Valle,México, DelValle, Col.Del 1139,Col. Pitágoras 1139, C.V.de C.V. A. de México: Alfaomega Grupo Editor, - Pitágoras - C.P. Editor, SSA. O1-800-020-4396 costo: 01-800-020-4396 Sin costo: 2490. Sin 5575-2420 /12490. (52-55) 5575-2420 Fax: (52-55) Tel.: (52-55) 5575-5022 -- Fax: [email protected] E-mail: [email protected],mx Colombia, Bogotá,Colombia, 29,Bogotá, 64AA29, No.64 15 No. S.A.--Carrera Colombia; Alfaomega Colombiana Carrera 15 Colombiana SA. Colombia: [email protected] E-mail: [email protected] 6068648(57-1) 6068648 Fax: (57-1) 2100122(57-1) 2100122 Tel.: (57-1) - Fax: - E-mail: Chile Santiago,Chile Providencia,Santiago, 1437,Providencia, Sierra 1437, La Sierra Dr. La S.A.Chile: Alfaomega Grupo Editor, - Dr. Editor, SA. [email protected] E-mail: [email protected] 235-5786(56-2) 235-5786 Fax: (56-2) 235-4248Tel.: (56-2) 235-4248 - Fax; - E-mail: Aires, BuenosAires, 1057,Buenos 11, C.P. 1057, Argentina: Alfaomega GmpoEditorArgentino,S 1307 P.B. Of.11,C.P. A. - Paraguay 1307P.B.Of. Grupo Editor Argentino, SA.-Paraguay [email protected] E-mail: [email protected] 71834811 7183 (54-11) 4811-0887 yy4811 - TelJFax: (54-11)4811-0887 Argentina, -Tel/Fax: Argentina, - E-mail:
Para Bea, Sea, con amor y gratitud
Índice índice general general Lista de acrónimos .............................................................................................15 15 ¿Cómo leer este libro? .......................................................................................17 17
1. Visión general y entorno de desarrollo ....................................21 CAPÍTULO l. 21 1.1. 22 1.1. ¿Qué hace que Android sea especial? .....................................................22 23 1.2. 1.2. Los orígenes .................................................. .. ... .......................................23 24 1.3. 1.3. Comparativa con otras plataformas ................................. .. .. .....................24 1.4. 1.4. Arquitectura de Android .............................................................................26
1.4.1. El núcleo Linux ............................................................... ........ .............27 1.4.1. 1.4.2. 27 1.4.2. RuntimedeAndroid Runtime de Android ........ ........................... ............. .............................27 1.4.3. 28 1.4.3. Librerías nativas ..................................................................................28
1.4.4. Entorno de aplicación ...... ................................................................. ...28 1.4.4. 28 29 1.4.5. 1.4.5. Aplicaciones .........................................................................................29 29 1.5. 1.5. Instalación del entorno de desarrollo ............. .. .........................................29 1.5.1. 30 1.5.1. Instalación de los componentes por separado ....................................30
1.5.1.1. 1.5.1. 1. Instalación de la máquina virtual Java .............................................30 30 1.5.1.2. 1.5. 1.2. Instalación de Eclipse .......................................................................30 30 1.5.1.3. Instalar Android SDK de Google Goog/e ......................................................31 31
1.5.2. Instalación del plug-in Android para Eclipse (ADT) .. .. .........................35 1.5.2. 35 1.5.3. Instalación con MOTODEV Studio ..... .................................................36 36 1.5.3. 1.6. Las versiones de Android y niveles de API. API .. ............................... ............ .38 38 1.6. 1.6.1. Android 1.0 Nivel de API 1 1 (septiembre 2008) ....................................39 1.6.1. 39 1.6.2. Android 1.1 1.1 Nivel de API 2 (febrero 2009) ... .......................................39 1.6.2. 39 1.6.3. Android 1.5 Nivel de API 3 (abril 2009, Cupcake) ...............................39 (abril2009, 39 1.6.3. 1.6.4. Android 1.6 1,6 Nivel de API 4 (diciembre 2009, 2009, Donut) ...........................39 1.6.4. 39 1.6.5. 1.6.5. Android 2.0 Nivel de API 5 (octubre 2009, 2009, Éclair) .............................. .40 40
1.6.6. Android 2.1 2.1 Nivel de API 7 (enero 2010, 2010, Éclair) ..................................40 1.6.6. 1.6.7. Android 2.2 Nivel de API 8 (mayo 2010, 1.6.7. 2010, Froyo) .... .............. ................40 40 2010, Gingerbread) ............... .41 41 1.6.8. Android 2.3 Nivel de API 9 (diciembre 2010, 1.6.9. 1.6.9. Android 3.0 3,0 Nivel de API 11 (febrero 2011 2011,, Honeycomb) .................. .41 41 1.6.10. 1.6.10. Android 3. 3.11 Nivel de API 12 (mayo 2011) ......................................... .42 42
7
1.6.11. Android 3.2 Nivel de API 13 Uulio (julio 2011) ............................................ .42 42 1.6.12. Android 4.0 Nivel de API 14 (octubre 2011, Ice Cream Sandwich) .... 43 Sandwich)....43 1.6.13. 43 1.6.13. Android 4.0.3 Nivel de API15 API 15 (diciembre 2011) ........................ .. .... ..43 1.6.14. 1.6.14. Elección de la plataforma de desarrollo .. ............ .............................. .43 43 1.7. Creación de un primer programa ............................................................. .45 45
1.7.1. 1. 7.1. Creación del proyecto ................ ..........................................................45 45 49 1.8. 1.8. Ejecución del programa .................. .................................................. ........ .49 1.8.1. 1.8.1. Ejecución en el emulador ............ ................. ...................................... .49 49 1.8.2. Ejecución en un terminal real ................................ ............................. .49 49
CAPÍTULO 2. Diseño de la interfaz de usuario: Vistas y Layouts .................61 61 2.1. 62 2.1. Creación de una interfaz de usuario por código ............. ..........................62 63 2.2. XML.. ..................................63 2.2. Creación de una interfaz de usuario usando XML 66 2.2.1. 2.2,1. Edición visual de las vistas ..... ........ .............. ................ .......................66 70 2.3. 2.3. Layouts ....................... ........................... ......................... .. .........................70 2.4. 76 2.4. Una aplicación de ejemplo: ejemplo: Asteroides ..... ............................ ....................76 78 2.4.1. Recursos alternativos .. ....... .... .... .... .. .. .............. ..... ..............................78 2.5. Estilos y temas ... ... .......................... .. ......... ......................................... ......82 82
8
2.5.1. Losestilos Los estilos....... ............... ..... ........ ....................... ........ ........................... 83 2.5.1. 2.5.1.1. 2.5. J. J. Heredar de un estilo propio ...............................................................83 83 2.5.2. Los temas ................... ........ .......... .................. ... ..................................84 84 2.6. 85 2.6. Uso práctico de Vistas y Layouts .. ..................................... .......................85
2.6.1. Acceder y modificar las propiedades de las vistas por código ............87 2.6.1. 87 2.7. Uso de TabLayout .....................................................................................89 2.7. 89 91 2.7.1. Uso de la etiqueta en Layouts ............................................91
CAPÍTULO 3. Actividades e Intenciones ..........................................................93 93 3.1.
Creación de nuevas actividades ....................... ................................... .....94 94
3.2. Comunicación entre actividades ...............................................................98 3.2. 98 3.3. Añadiendo un menú ................................................................................100 100
3.4. Creación y uso de iconos ........................................................................102 3.4. 102 3.5. Añadiendo preferencias de usuario ............... ...... ................................. ..105 3.5. 105 3.5.1. Organizando preferencias ............................................. .......... .. ........108 3.5.1. 108 3.5.2. Como se almacenan las preferencias de usuario .............................109 109 3.5.2. 3.5.3. Accediendo a los valores de las preferencias ...... .. ...........................110 3.5.3. 11 O 3.6.. Añadiendo una lista de puntaciones en Asteroides ....... .. .... .. ....... ......... .111 3.6 111 3.7. 3. 7. La vista ListView ... .. ....... ................. ............ ............... ...... .. ......................113 113 3.7.1. 3. 7 .1. Un ListView que visualiza una lista de Strings ..................................115 115 3.7.2. Un ListView que visualiza Layouts personalizados .. .................. .......116 116
3.7.3. Un ListView con nuestro propio adaptador ........... .................... ........118 118 3.7.4. 3. 7 .4. Detectar una pulsación sobre un elemento de la lista .......... .............120 120 3.8.
121 Las Intenciones ....................... .. .. .................................... .... ....................121
3.8.1. La etiqueta ...................................................................126 126
CAPÍTULO 4. Gráficos en Android ................................................................127 127 4.1. Clases para gráficos en Android .............................. .. .............................128 4.1. 128 128 4.1.1. Canvas ............................................. .. ............................. ...................128
4.2. Creación de una vista en un fichero independiente ................. ...............140 4.2. 140 4.3. 143 4.3. Creando la actividad principal de Asteroides ............................. .............143 4.3.1. La clase Gráfico ............... ............ .. .......... ................... ........... ............145 4.3.2. 146 4.3.2. La clase VistaJuego .................. ......................................... ..... .. ........146 4.3.3. 148 4.3.3. Introduciendo la nave en VistaJuego ........................................ ........148 4.4. 150 4.4. Representación de gráficos vectoriales en Asteroides ...........................150 152 4.5. 4.5. Animaciones ................ ... ..... ... ..... .................. .............................. ............152 4.5.1. 153 4.5.1. Animaciones Tween ......................................................... .......... .......153 4.5.2. 156 4.5.2. Animaciones de propiedades ........................................ ...... ..............156
CAPÍTULO 5. Entradas en Android: teclado, pantalla táctil y sensores .....157 157 5.1. Manejando eventos de usuario ............................... ................ .. ..............158 158 5. 1.1. Escuchador de eventos ............................. ........ ..... ...........................158 158 5.1.1. 5.1.2. Manejadores de eventos ...................................................................159 159 159 5.2. 5.2. El teclado ..................................................... .......................................... ..159 5.3. 162 5.3. La pantalla táctil ......................................... .......................................... ...162 5.3.1. 165 5.3.1. Manejo de la pantalla táctil con multi-touch ....... .............. ...... ...........165 5.3.2. 168 5.3.2. Manejo de la nave con la pantalla táctil ......... ................ ........... ........168 5.4. 5.4. Gestures ............................................... ..................... .. ........ ....................169 5.4.1. 170 5.4.1. Creación y uso de una librería de gestures ......... .. ............................170 5.4.2. 174 5.4.2. Añadiendo gestures a Asteroides ............. .. ............................ ...........174 5.5. 176 5.5. Los sensores .... ......... .................. ... ................ .. .. .................................... .176 5.5.1. Un programa que muestra los sensores disponibles y sus valores en tiempo real. 181 real .... ................................... ..... ......... ........181 5.5.2. 183 5.5.2. Utilización de los sensores en Asteroides .........................................183 5.6. 184 5.6. Uso de hilos de ejecución (Threads) ...... ............................... ....... ...........184 5.6.1. 185 5.6.1. Introduciendo movimiento en Asteroides .. ..................... ...................185 187 5.7. Introduciendo un misil en Asteroides ................. .. .. .. .... .. ....... .. ....... .........187
10
CAPÍTULO 6. Multimedia yy ciclo ciclo de de vida vida de de una una actividad actividad ...........................191 191 6.1. de una una actividad actividad ..... .............................. .................... .........192 192 6.1. Ciclo de vida de 6.1.1. proceso se se elimina? elimina? ......................................... ........................198 198 6.1.1. ¿Qué proceso el estado estado de de una una actividad actividad ..............................................200 200 6.1.2. Guardando el 6.1.2. Guardando 6.2.
Utilizando multimedia multimedia en en Android Android .. .. ...... .. .... .. .. ...... ........ .................. ........202 202 Utilizando
6.3. La vista VideoView VideoView .......... ................ ........... ..... ........ ................................205 205 6.4. MediaPiayer ..............................................................................207 207 6.4. La clase MediaPlayer 207 6.4.1 de audio audio con con MediaPlayer MediaPiayer .................... ......................207 6.4.1.. Reproducción de 6.5. multimedia pasó pasó aa paso paso .................................................208 208 6.5. Un reproductor multimedia 6.6. efectos de de audio audio con con SoundPool SoundPool .....................................215 215 6.6. Introduciendo Introduciendo efectos 6.7. de audio audio .............. ...................................................................217 217 6.7. Grabación de
CAPÍTULO 7. Seguridad Seguridad yy posícionamiento posicionamiento ....................................................223 223 7.1. Los tres pilares pilares de de la la seguridad seguridad en en Android Android ................ ............................224 224 7.1.1. Linux yy acceso acceso aa ficheros ficheros ............ .........................................225 225 7.1.1. Usuario Linux esquema de de permisos permisos en en Android Android .................................................225 225 7.1.2. 7.1.2. El esquema 7.1.3. definidos por por el el usuario usuario en en Android Android ...... .. ...........................227 227 7.1.3. Permisos definidos 7.2. Localización Localización .. ........................... ....... ................ .........................................231 231
7.2.1. Emulación 7.2.1. Emulación del del GPS GPS con con Eclipse Eclipse ........................................................236 236 7.3. Maps ................... .................. .. ....................................................237 237 7.3. Google Maps 7.3.1. de una una clave clave Google Google Maps Maps ........ .............. ...... ..................237 237 7.3.1. Obtención de
7.4. Fragmentando los 242 los asteroides asteroides ..................................................................242 7.4.
CAPÍTULO 8. Servicios, Servicios, notificaciones notificaciones yy receptores receptores de de anuncios anuncios ..................245 245 8.1. los servicios servicios en en Android Android ...................................................246 246 8.1. Introducción Introducción aa los
8.1.1. Ciclo de vida 8.1.1. vida de de un un servicio servicio ...............................................................247 247 8.1.2. Permisos ...................................... ............................ ..........................249 249 8.1.2. 8.2. Un servicio para ejecución ejecución en en segundo segundo plano plano........................................249 249 8.2. 8.2.1. Los métodos 8.2.1. métodos onStartCommad() onStartCommad() yy onStartQ onStart() ......................................252 252 8.3. Las notificaciones 8.3. notificaciones de de la la barra barra de de estado estado .................................................254 254 Configurando tipos tipos de de avisos avisos en en las las notificaciones notificaciones .............. .............257 257 8.3.1. Configurando
8.3. 1.3. Añadiendo parpadeo de LED ..........................................................25 257 8.3.1.3. 7
8.4. 8.4. Receptores de anuncios ............................................ ............. ..... ............258 258 AndroidManifest.xml ...... ..........259 259 8.4.1. Receptor de anuncios registrado en AndroidManifest.xml
8.4.2. Arrancar un servicio tras cargar el sistema operativo .......................265 265 aplicaciones .......266 266 8.5. 8.5. Un servicio como mecanismo de comunicación entre aplicaciones 267 8.5.1. Crear la interfaz en AIDL ................................ ................ ...................267 268 8.5.2. Implementar la interfaz ................ ................................................ ......268 8.5.2. 8.5.3. Publicar la interfaz en un servicio ..................... .................................269 269 8.5.3. 270 8.5.4. 8.5.4. Llamar a una interfaz remoto ................ .................. ................... ........270
CAPÍTULO 9. Almacenamiento de datos .........................................................273 273 9.1. Alternativas para guardar datos datos permanentemente en Android .. ....... ....274 274 9.1. 275 9.2. Añadiendo puntuaciones en Asteroides ........ .......... ................ ............... .275 9.3. Preferencias .... ........... ...... ....................... ................................................277 277
9.4. Accediendo a ficheros ............... .................................. ....... .... ...... ..... ......280 9.4. 280 281 9.4.1. Sistema interno de ficheros ...............................................................281 9.4.2. Sistema de almacenamiento externo ...... .............. ................ ............283 283 9.4.2. 1. Verificando acceso a la memoria externa ........................................285 285 9.4.2.1.
9.4.2.2. 9.4. 2.2. Almacenando ficheros específicos especificas de tu aplicación en el almacenamiento externo ..........................................................286 286 9.4.2.3. Almacenando ficheros compartidos en el almacenamiento externo ..................................................................287 287
9.4.3. Acceder a un fichero de los recursos ................................................288 288 9.5. Trabajando con XML ................. ........ ......................................................289 289 9.5. 290 9.5.1. 9.5.1. Procesando XML con SAX .......... ......................................................290 296 9.5.2. 9.5.2. Procesando XML con DOM ...............................................................296 9.6. 301 9.6. Bases de datos ................. .... ......................................... ........... .. .............301 9.6.1. rawQuery() ...... .................. ........................ .. ..304 304 9.6,1. Los métodos query() y rawQueryQ 305 9.7. 9.7. Utilizando la clase ContentProvider ............... ...... ...................................305 9.7.1. Conceptos básicos .............. .. .. .................... ......................................306 306 9. 7.1.1. El modelo de datos ...........................................................................306 306 9.7.1.1. 9. 7. 1.2. LasURI Las URJ ............................................................................................306 306 9.7.1.2.
9.7.2. 307 9.7.2, Acceder a la información de un ContentProvider .............. ................307 9. 7.2.1. Leer información de un ContentProvider .........................................308 308 9.7.2.1.
12 12
9.7.2.2. Escribir información en un ContentProvider ...................................311 9.7.2.2. 311 9.7.2.3. 9. 7.2.3. Borrar y y modificar elementos de un ContentProvider .....................312 312 9.7.3. 312 9.7.3. Creación de un ContentProvider .......................................................312
9.7.3.1. 9. 7.3.1. Definir la estructura de almacenamiento del ContentProvider .......313 313 9.7.3.2. 9. 7.3.2. Extendiendo la clase ContentProvider .............................................314 314 9.7.3.3. 9. 7.3.3. Declarar el ContentProvider en AndroidManifest.xml ....................318 318 9.7.4. Acceso a PuntuacionesProvider desde Asteroides Asteroides ... ........................319 319
CAPÍTULO 10. Internet: sockets, HTTP y servicios servicios web web ............. ................321 321 10.1. Comunicaciones en Internet mediante sockets .... ..................................322 322
10.1.1. 1 0.1 .1. La arquitectura cliente/servidor ........................................................322 322 10.1.2. 322 10.1.2. ¿Qué es un socket? ..........................................................................322
10.1.3. Un ejemplo de un cliente 1 / servidor de ECHO ECH0 ... .... .. ........ .................324 324 puntuaciones ................................326 326 110.1.4. 0.1.4. Un servidor por sockets para las puntuaciones 330 110.2. 0.2. La web y el protocolo HTTP ....................................................................330
10.2.1. 1 0.2.1. El protocolo HTTP ................... ................ ................ ........ ......... ........330 330 10.2.2. Versión 1.0 del protocolo HTTP ......................... ..............................332 332 10.2.2. 334 10.2.3. Utilizando HTTP desde Android .................................................. ... ..334
10.3. Servicios web ............................. ..... ............................................. .. .........339 10.3. 339 10.3.1. Alternativas en los servicios web ................... .............. ................... ..339 339 10.3.1.1. 10.3.1. 1. Servicios web basados en SOAP ....................................................340 340 REST.. ...................................................341 341 10.3.1.2. Servicios web basados en REST.
10.3.2. Acceso a servicios web de terceros ............................................ .....345 10.3.2. 345 10.3.3. Diseño e implantación de nuestro servicio web ... ....... .. ...... .............349 349
10.3.3.1. Instalación del servidor de servicios web ......................................349 349 351 10.3.3.2. Creación un servicio web en Eclipse .............................................35! 10.3.3.3. Explorando el servicio web desde Eclipse .....................................354 354 10.3.3.4. Explorando el servicio web desde HTML ......................................358 358 10.3.3.5. Utilizando el servicio web desde Asteroides ..................................360 360
13
CAPÍTULO 11. Publicar Aplicaciones ........................................................... 365 365 11 .1. Preparar y testear tu aplicación ..............................................................366 11.1. 366 11 .1.1. Preparar la aplicación para distintos tipos de dispositivo 366 11.1.1. dispositivo ................. 366 11.1.2. Testear la aplicación .......................... ............................................ ... 368 368 11 .2. Crear un certificado digital y firmar la 11.2. la aplicación .................................... 370 370 11 .3. Publicar la aplicación ............................................................................... 372 11.3. Publicarla 372 11 .3.1. Publicar en lnternet... 11.3.1. Publicaren Internet ........................................................................ 372 372 11 .3.2. Publicar en Google Play Store ......................................................... 373 11.3.2. Publicaren 373 11 .4. Asteroides: 11.4. Asteroides: detectar victoria y derrota .....................................................377 377
ANEXO A. Referencia Java .............................................................................. 379 379 ANEXO B. Referencia: la clase View y sus descendientes ........... ............ ...... .391
14
Lista Lista de de acrónimos acrónimos AIDL API AVD DOM OTO DTD FTP GPS HTTP lOE IDE JDK JRE JSON JVM MIME NDK NOK OpenGL PCM RAM REST RPC SAX SDK SMS SOA SOAP SQL TCP Ul ül URL
Android Interface tnterface Definition Language
Application Programming Interface Android Virtual Device Modelo de Objetos del Documento Document Type Definition File Transfer Protocol Global Positioning System Hypertext Transfer Protocol lntegrated Integrated Development Environment Java Development Kit Java Runtime Environment JavaScript Object Notation Java Virtual Machine Multipurpose Internet Mail Extensions Native Development Kit Open Graphic Library Pulse-Code Modulation Random Access Memory REpresentational State Transfer
Calis Remote Procedure Cal/s Simple API forXML for XML Software Developers Kit Short Message Service Service-Oriented Architecture Simple Object Access Protocol Structured Query Language Transmission Control Protocol User Interface Universal Resource Locator
15
16
URI
Uniform Resource ldentifier Identifier
USB
Universal Serial Bus
W3C
Worfd World Wide Web Consortium
WSDL
Web Services Oescription Descrlption Language
WWW www
World Wide Web Worfd
XML
Extensible Markup Language
¿Cómo este libro? libro? ¿Cómo leer leer este Este libro quiere ser una una guía guía para para aquellos aquellos lectores lectores que que pretendan pretendan introducirse introducirseen en la programación de Android. Android. Se Se ha ha estructurado estructurado en en 11 11 capítulos capítulos que que abordan abordan aspectos específicos especificas del del desarrollo desarrollo de de aplicaciones. aplicaciones. Resulta Resulta conveniente conveniente realizar realizar una lectura secuencial de de estos estos capítulos, capítulos, dado dado que que muchos muchos de de los los conceptos conceptos que que se abordan serán compredidos compredidos mejor mejor sisi hemos hemos leído leído los los capítulos capítulos anteriores. anteriores. Además, a lo largo del del libro libro se se desarrolla desarrolla una una aplicación aplicación de de ejemplo, ejemplo, elel mítico mítico juego Asteroides. Para que que muchos muchos de de los los ejercicios ejercicios funcionen funcionen correctamente correctamente resulta imprescindible realizar realizar los los anteriores. anteriores. El libro que tienes entre entre las las manos manos no no ha ha sido sido concebido concebido solo solo para para ser ser leído. leído. Es Es más bien una guía guía estructurada estructurada que que te te irá irá proponiendo proponiendo una una serie serie de de ejercicios, ejercicios, actividades, videos explicativos, explicativos, test test de de auto auto evaluación,... evaluación,... Todo Todo este este material material yy muchos más recursos adicionales adicionales están están disponibles disponibles en en lala Web Web recursos www.androidcurso.com. En www.androidcurso.com. En ella ella se se publicarán publicarán las las novedades, novedades, erratas erratas ee información información para complementaria relativas aa este este libro. libro. Por Por lo lo tanto, tanto, resulta resulta imprescindible imprescindible para sacarle partido aa este libro libro un un ordenador ordenador con con el el SDK SDK de de Android Android instalado instaladopara parahacer hacer los ejercicios yy acceso aa Internet Internet para para el el material material en en línea. línea. A lo largo largo del libro se utilizan utilizan los los siguientes siguientes iconos iconos para para indicar indicar los los tipos tipos de de actividades: actividades:
~Objetivos:
Antes de de empezar empezar cada cada capítulo capi;uto lee Objetivos: Antes lee con con detenimiento detenimiento lala introducción y los objetivos. objetivos.
m Poli[Media] : Más Poli[Media]: Más de de 50 50 videos videos grabados grabados por por el el autor autor del del libro libro donde se exponen de forma forma didáctica didáctica los los aspectos aspectos clave clave del del sistema sistema Android. Android. Se Se utiliza una moderna herramienta herramienta desarrollada desarrollada en en la la Universidad Universidad Politécnica Politécnica de de Valencia que te permitirá permitirá ver ver simultáneamente simultáneamente las las presentaciones presentaciones yy alal profesor profesor mientras se desarrollan los los conceptos conceptos de de cada cada capítulo. capítulo.
Ejercicio paso a paso: La La mejor mejor forma forma de de aprender aprender es es haciendo. haciendo. No No tendrás más que irir siguiendo siguiendo los los pasos pasos uno uno tras tras otro otro para para descubrir descubrir como como se se resuelve el ejercicio ejercicio propuesto. propuesto. Para Para que que no no se se ta ta haga haga pesado pesado teclear teclear todo todo elel código, te proponemos que que lo lo copies copies yy peges peges desde desde la la página página Web Web del del curso. curso.
17
$
0
Práctica: Este * Este será será el el momento momento de de que que tomes tomes lala iniciativa iniciativa yy trates trates de de se propone. propone. Recuerda Recuerd a que que para para aprender aprenderhay hayque quepracticar. practicar. resolver el problema que se
j: "ffii Solución: Solución: Te será de de ayuda ayuda si si tienes tienes problemas problemas alal resolver resolver una una práctica, o simplemente quieres quieres comparar comparar tu tu solución solución con con otra otra diferente. diferente.
i)
<;"'";;(~ Nota sobre Java: Si Si no no dominas dominas el el lenguaje lenguaje de de programación programación Java Java no no tendrás problema en seguir el el libro. libro. Cada Cada vez vez que que aparezca aparezca algún algún concepto concepto complejo sobre Java, trataremos trataremos de de aclararlo. aclararlo.
T Recursos adicionales: Te Te proporcionamos proporcionamos lala información información clave clave que que te ayudará en el desarrollo desarrollo de de tus tus aplicaciones. aplicaciones.
@;Enlaces Enlaces de interés: Internet Internet te te será será de de gran gran ayuda ayuda para para complelar completar lala información necesaria para ndroid. Te para programar programar en en AAndroid. Te proponemos proponemos las las páginas páginas más interesantes de cada cada apartado. apartado.
Preguntas de repaso yy reflexión: reflexión: ¿Has ¿Has comprendido comprendido correctamencorrectamente los aspectos claves? Sal Sal de de dudas dudas haciendo haciendo los los test test de de autoevaluación. autoevaluación.
« Referencias rápidas: Utiliza Utiliza los los anexos anexos para para localizar localizar rápidamente rápidamente esa palabra clave o clase clase que que no no recuerdas. recuerdas.
18
De forma adicional, en la Web www.androidcurso.com encontrarás: •
Tutoriales sobre Java: ¿Sabes lo que es la herencia, el el polimorfismo oo la la sobrecarga en Java? Si no dominas el lenguaje de programación Java Java te te recomendamos realizar alguno de los tutoriales propuestos.
•
Código abierto de proyectos Android: Muchos Muchos alumnos alumnos que que han han realizado un curso basado en este libro han tenido la la generosidad generosidad de de recomendamos que que compartir sus proyectos con todos nosotros. Te recomendamos consultes la lista de proyectos disponibles de código abierto, puedes puedes aprender mucho estudiando su código. Cuando termines de leer leer este este libro, también tu podrás hacer un proyecto como los que se muestran.
•
Material adicional sobre Android: Encontrarás Encontrarás además nuevos nuevos Poli medias, referencias, ... no incluidos en el Libro. tutoriales, Polimedias, referencias,...
•
Foros: Puedes comunicarte con otras personas y consultar cualquier cualquier duda que se te plante en un apartado o ejercicios del libro.
•
Cursos online: Si te interesa ampliar tu formación puedes puedes matricularte matricularte en en cursos sobre Android impartidos por la Universidad Politécnica de Valencia.
19
CAPÍTULO CAPÍTULO l. 1. Visión y entorno Visión general general y entorno de de desarrollo desarrollo
La telefonía móvil está cambiando la sociedad actual de una forma tan significativa como lo ha hecho Internet. Esta revolución no ha hecho más que empezar, empezar, los nuevos terminales ofrecen unas capacidades similares a las de un ordenador personal, lo que permite que puedan ser utilizados para leer nuestro correo o navegar por Internet. Pero a diferencia de un ordenador, un teléfono móvil siempre está en el bolsillo del usuario. usuario. Esto permite un nuevo abanico de aplicaciones mucho más cercanas al usuario. usuario. De hecho, hecho, muchos autores coinciden en que el nuevo ordenador personal del siglo veintiuno será un terminal móvil. El lanzamiento de Android como nueva plataforma para el desarrollo de aplicaciones móviles ha causado una gran expectación y está teniendo una importante aceptación, tanto por los usuarios como por la industria. En la actualidad se está convirtiendo en la alternativa estándar frente a otras plataformas como iPhone, ¡Phone, Windows Phone o BlackBerry. BlackBerry. A lo largo de este capítulo veremos las características de Android que lo hacen competidores. Se explicará también cómo instalar y trabajar con diferente de sus competidores. el entorno de desarrollo (Eclipse+ SDK). (Eclipse + Android SDK).
~Objetivos:
• Objetivos:
•
Android, destacando los aspectos que lo Conocer las características de Android, hacen diferente de sus competidores.
•
Estudiar la arquitectura interna de Android.
• Aprender a instalar y trabajar con el entorno de desarrollo (Eclipse + Android SDK). SDK). •
Enumerar las principales versiones de Android y aprender a elegir la más idónea para desarrollar nuestras aplicaciones. aplicaciones.
21 21
El gran libro de Android • Crear una primera aplicación y estudiar la estructura de un proyecto en Android. Android. • Conocer donde podemos conseguir documentación sobre Android. Android. • Aprender a utilizar las herramientas disponibles para delectar detectar errores en el código. código.
1.1. que Android ea especial? 1.1. ¿Qué ¿Qué hace hace que Android sea especial? Como hemos comentado, comentado, existen muchas plataformas para móviles (iPhone, (iPhone, Symbian, Symbian, Windows Phone, Phone, BlackBerry, BlackBerry, Palm, Palm, Java Mobile Edition, Edition, Linux Mobile Moblle (LiMo), (LiMo), etc.); etc.); sin embargo Android presenta una serie de características que lo combina, en una misma solución, hacen diferente. diferente. Es el primero que combina, solución, las siguientes cualidades: cualidades: • Plataforma realmente abierta. Es una plataforma de desarrollo libre abierto. Una de sus grandes ventajas es basada en Linux y de código abierto. que se puede usar y "customizar" el sistema sin pagar royalties. royalties. • Portabilidad asegurada. Las aplicaciones finales son desarrolladas en Java, Java, lo que nos asegura que podrán ser ejecutadas en una gran variedad de dispositivos, dispositivos, tanto presentes como futuros. futuros. Esto se consigue gracias al concepto de máquina virtual. • Arquitectura basada en compor compo entes inspirados en Internet. Por XML, lo que ejemplo, ejemplo, el diseño de la interfaz de usuario se hace en XML, permite que una misma aplicación se ejecute en un móvil de pantalla reducida o en un netbook. netbook. • Filosofía de dispositivo siempre conectado a Internet. • Gran cantidad de servicios incorporados. Por ejemplo, ejemplo, localización redes, bases de datos con SQL, SQL, basada tanto en GPS como en redes, voz, navegador, navegador, multimedia, multimedia, etc. reconocimiento y síntesis de voz, etc. • Aceptable nivel de seguridad. Los programas se encuentran aislados unos de otros gracias al concepto de ejecución dentro de una caja que hereda de Linux. Linux. Además, Además, cada aplicación dispone de una serie de permisos que limitan su rango de actuación (servicios de localización, localización, acceso a Internet, Internet, etc.). etc.). • Optimizado para baja potencia y poca memoria. Por ejemplo, ejemplo, Android utiliza la Máquina Virtual Dalvik. Dalvik. Se trata de una implementación de Google de la máquina virtual de Java optimizada para dispositivos móviles. móviles. • Alta calidad de gráficos y sonido. Gráficos vectoriales suavizados, suavizados, animaciones inspiradas en Flash, Flash, gráficos en 3 dimensiones basados en OpenGL. Incorpora los codees estándar más comunes de audio y vídeo, vídeo, AAC, etc. incluyendo H.264 (AVC), MP3, MP3, AAC, etc.
22
Visión general yy entorno de desarrollo Como hemos visto, visto, Android combina características muy muy interesantes. interesantes. No No obstante, estándar de de obstante, la pregunta del millón es, ¿se convertirá Android en el estándar (S.O.) esta pregunta pregunta habrá habrá que que sistema operativo (S O.) para móviles? Para contestar aa esta de Apple yy cuál es es la la respuesta esperar un tiempo para ver la evolución del iPhone de S.O. para móviles. móviles. de Windows con el lanzamiento de su nuevo S.O. En conclusión, conclusión, Android nos ofrece una forma sencilla sencilla y novedosa novedosa de de lo largo de de este este texto texto implementar potentes aplicaciones para móviles. móviles. A lo trataremos de mostrar de la forma más sencilla para conseguirlo. conseguirlo.
1.2. Los orígenes orígenes 1.2. Los Google adquiere Android Inc. lnc. en el año 2005. 2005. Se trataba de una pequeña pequeña compañía que acababa de ser creada, creada, orientada a la la producción de aplicaciones la creación creación de de para terminales móviles. móviles. Ese mismo año empiezan aa trabajar en la una máquina virtual Java optimizada para móviles (Dalvik VM). VM). En el año 2007 se crea el consorcio Handset Alliance11 con el el objetivo objetivo de desarrollar estándares abiertos para móviles. móviles. Está formado por Google, Google, Intel, lntel, Texas Instruments, lnstruments, Motorola, T-Mobile, T-Mobile, Samsung, Samsung, Ericsson, Ericsson, Toshiba, Toshiba, Vodafone, Vodafone, NTT DoCoMo, otros. Una pieza clave de de los objetivos objetivos de de esta DoCoMo, Sprint Nextel y otros. alianza es promover el diseño y difusión de la plataforma Android. Android. Sus miembros miembros se han comprometido a publicar una parte importante de de su propiedad intelectual intelectual como código abierto bajo la licencia Apache v2.0. v2.0. del Android SDK. SDK. Al año En noviembre del 2007 se lanza una primera versión del octubre, Google Google siguiente aparece el primer móvil con Android (T-Mobile G1). G1). En octubre, licencia de código código abierto libera el código fuente de Android, principalmente bajo licencia núcleo). Ese mismo mes, mes, se abre Android Market Market Apache (licencia GPL v2 para el núcleo). aplicaciones. En abril del 2009, Google lanza la versión para la descarga de aplicaciones. versión 1.5 1.5 del SDK que incorpora nuevas característica como el teclado en en pantalla. pantalla. A finales finales del 2009 se lanza la versión 2.0 2.0 y durante el 2010 201 O las las versiones 2.1, 2.1, 2.2 2.2 yy 2.3. 2.3. Durante el año 2010, 201 O, Android se consolida como uno uno de de los sistemas operativos para móviles más utilizados, con resultados cercanos al al iPhone, iPhone, ee EE.UU. incluso superando al sistema de Apple en EE.UU. 4.x tanto tanto para En el 2011 se lanzan la versión 3.x específica para tabletas y 4.x móviles como para tabletas. tabletas. Durante este año, año, Android se se consolida consolida como como la plataforma para móviles más importante, importante, alcanzando una una cuota de mercado mercado superior al 50%. En 2012, 2012, Google cambia su estrategia en su tienda de de descargas descargas online, remplazando Android Market por Google Play Store, Store, donde donde en un un solo portal unifica la descarga de aplicaciones como de contenidos. contenidos.
11
http://www.openhandsetalliance.com http://www openhandseíalliance com
23
_...
El gran libro de Android
--
.,,,, ... llu •
Poli[Media]: Introducción a la la plataforma plataforma para para móviles móvilesAndroid. Android. Pol¡[Media |: Introducción Preguntas de repaso repaso yy reflexión: reflexión: Características Características yy orígenes orígenes de de Android.
1.3. Comparativa con con otras otras plataformas plataformas 1.3. Comparativa En este apartado apartado vamos vamos aa describir describir las las características características de de las las principales principales Dado la la gran gran cantidad cantidad de de datos datos plataformas móviles móviles disponibles disponibles en en la la actualidad. actualidad. Dado Deesta esta que se indican, indican, hemos hemos utilizado utilizado una una tabla tabla para para representar representar la la información. información. De más sencillo sencillo comparar comparar las las distintas distintas plataformas. plataformas. forma resulta más
Poli[ Media]: Comparativa Comparativa de de las las principales principalesplataformas plataformas WtÉík Poli[MedÍaJ: para móviles. móviles. Wüz para
.•.. ~ ,í ~
Compañía Núcleo del SO Familia CPU soportada Lenguaje de programación
24
Apple MacOS X ARM Objective-C, Objective-C, C++
Android
Windows i/Vindows Phone 7 40 4.0 Open Handset Windows Alliance Windows Wndows CE Linux ARM, MIPS, ARM, MIPS, ARM Power, Power, x86 Java, Java, C++
'
. .
•
IP Apple iOS51 ¡OS 5.1
.
C#, C#, muchos
l
•. symbian symbian
BlackBerry 057 OS 7 RIM
.·
Symbian 95 9.5 Symbian Symbian Foundation Foundation
Mobile OS
Mobile OS
ARM
ARM
Java
C++
Visión general yy entorno de desarrollo
symbian Apple iOS ¡OS 51 5.1
Android 4.0 40 Software libre 6 ^^ablerto^ y abierto
único Variedad de dispositivos Tipo de antalla Ilantalla Aplicaciones nativas
Tabla 1: Comparativa de las principales plataformas plataformas móviles. móviles.
Otro aspecto fundamental aa la hora hora de de comparar comparar las las plataformas plataformas móviles móviles es es su su mercado. En la siguiente cuota de mercado. siguiente gráfica gráfica podemos podemos ver ver un un estudio estudio realizado realizado por por la la empresa Gratner Group, donde donde se se muestra muestra la la evolución evolución del del mercado mercado de de los los sistemas operativos para para móviles móviles según según el el número número de de terminales terminales vendidos. vendidos. Podemos destacar: destacar: el importante importante descenso descenso de de ventas ventas de de la la plataforma plataforma Symbian Symbian de de Nokia; de BlackBerry; BlackBerry; como como la la plataforma plataforma de Nokia; el declive continuo de de Windows Windows parece parece que no despega; despega; como Apple tiene tiene afianzada afianzada una una cuota cuota de de mercado mercado yy ha ha
25
El gran libro de Android un importante importante repunte repunte aa finales finales del del 2011 2011.. Finalmente, Finalmente, destacamos destacamos experimentado un el espectacular ascenso ascenso de de la la plataforma plataforma Android, Android, que que lele ha ha permitido permitidoalcanzar alcanzaren en dos años una cuota de de mercado mercado superior superior alal 50%. 50%. 60%
· -- - - - - - · - - --- - - - - - - -- - - - - -
50% 40% 30%
-
symbian
-
Android
Apple ¡OS
~ AppleiOS
20%
-
BlackBerry BiackBerry
-
Windows Phone
10% 0%
2009 2010 2010 2010 2010 2010 2010 2011 2011 2011 2011 2011 2011 2011 2011 Q4 Q1 Q2 Q3 Q3 Q4 Q4 Q1 Q1 Q2 Q2 Q3 Q3 Q4 Q4 Figura 1: Cuota de de mercado mercado de de los los sistemas sistemas operativos operativospara paramóviles móviles hasta el 2011 en el el mundo mundo (fuente: (fuente: Gratner GratnerGroup). Group).
Se han realizado otros tipos tipos de de estudios estudios que que miden miden lala actividad actividadde delos losusuarios usuarios en Internet. En En estos casos casos se se comprueba comprueba como como los los usuarios usuariosde deAndroide Android eiPhone ¡Phone son los más activos, mientras mientras que que los los usuarios usuarios con con otras otras plataformas, plataformas, como como Symbian, utilizan sus sus terminales terminales de de forma forma más más convencional. convencional.
Preguntas Prequntas de repaso y reflexión : Plataformas para móviles.
1.4. 1.4. Arquitectura Arquitectura de de Android Android El siguiente gráfico muestra muestra la la arquitectura arquitectura de de Android. Android. Como Como se se puede puedever, ver, está está formada por cuatro capas. capas. Una Una de de las las características características más más importantes importantes es es que que todas las capas están están basadas basadas en en software software libre. libre.
26
Visión general y entorno de de desarrollo desarrollo Aplicaciones
Entorno de aplicación
I Manejador de recursos I Manejador de actividades
Sistema de vistas Manejador notificaciones
Content Froviders Librerías nativas
Sistem C
OpenCORE
Surface manager
V.ebKH
SGL
OpenGL ES
FteeType
SQLite
SSL
Manejador de ventanas Runtime de Android
Maquina virtual Datvik Core Líbraries
Núcleo Linux
Figura 2: Arquitectura de de Android. Android.
1.4.1. El núcleo Linux Linux está formado formado por por el el sistema sistema operativo operativo Linux, Linux, versión versión 2.6. 2.6. El núcleo de Android está servicios como como la la seguridad, seguridad, elel manejo manejo de de lala memoria, memoria, elel Esta capa proporciona servicios multiproceso, la pila pila de protocolos protocolos yy el el soporte soporte de de drivers driverspara para dispositivos. dispositivos. actúa como como capa capa de de abstracción abstracción entre entre elel hardware hardwareyy elel Esta capa del modelo actúa Por lo lo tanto, tanto, es es la la única única que que es es dependiente dependientedel del hardware. hardware. resto de la pila. Por Runíf/ne de Android Android 1.4.2. Runtime el concepto concepto de de máquina máquina virtual virtual utilizado utilizado en en Java. Java. Dado Dado las las Está basado en el los dispositivos dispositivos donde donde ha ha de de ejecutarse ejecutarse Android Android (poca (poca memoria memoriayy limitaciones de los no fue fue posible posible utilizar utilizar una una máquina máquina virtual virtual Java Java estándar. estándar. procesador limitado) no decisión de de crear crear una una nueva, nueva, lala máquina máquina virtual virtual Dalvik, Dalvik, que que Google tomó la decisión respondiera mejor a estas estas limitaciones. limitaciones. de la la máquina máquina virtual virtual Dalvik Dalvik que que facilitan facilitan esta esta Algunas características de recursos son: son: que que ejecuta ejecuta ficheros ficheros Dalvik Dalvik ejecutables ejecutables(.dex) (.dex)(formato (formato optimización de recursos ahorrar memoria). memoria). Además, Además, está está basada basada en en registros. registros. Cada Cada optimizado para ahorrar su propio propio proceso proceso Linux Linux con con su su propia propia instancia instancia de de lala máquina máquina aplicación corre en su al kernel kernel de de Linux Linux algunas algunas funciones funciones como como threading threading yy elel virtual Dalvik. Delega al manejo de la memoria a bajo bajo nivel. nivel. También se incluye en el el Runtine Runtine de de Android Android el el "core "core libraries" libraries" con con lalamayoría mayoría de las librerías disponibles disponibles en en el el lenguaje lenguaje Java. Java.
27
El gran libro de Android
1.4.3. Librerías nativas Incluye un conjunto de librerías en C/C++ usadas en varios componentes de Android. Están compiladas en el código nativo del procesador. Muchas de las librerías utilizan proyectos de código abierto. Algunas de estas librerías son: son: •
System e library: una derivación de la librería BSD de e C library: C estándar (libe), adaptada para dispositivos embebidos basados en Linux.
•
Media Framework: librería basada en PacketVideo's OpenCORE; soporta codees de reproducción y grabación de multitud de formatos de audio, vídeo e imágenes MPEG4, H.264, H.264, MP3, MP3, AAC, AMR, JPG y PNG. PNG.
•
Surface Manager: Manager: maneja el acceso al subsistema de representación gráfica en 2D y 3D.
•
WebKit: soporta un moderno navegador web utilizado en el navegador Android y en la vista webview. webview. Se trata de la misma librería que utiliza Google Chrome y Safari de Apple.
•
SGL: motor de gráficos 2D. 2D.
• Librerías 30: 3D: implementación basada en OpenGL ES 1.0 API. Las librerías utilizan el acelerador hardware 3D si está disponible, disponible, o el software altamente optimizado de proyección 3D. 3D. •
FreeType: fuentes en bitmap y renderizado vectorial.
•
SQLite: SQLite potente y ligero motor de bases de datos relacionales relaciónales disponible para todas las aplicaciones. aplicaciones.
•
SSL: proporciona servicios de encriptación Secure Socket Layer. Layer.
1.4.4. Entorno de aplicación Proporciona una plataforma de desarrollo libre para aplicaciones con gran riqueza e innovaciones (sensores, localización, localización, servicios, barra de notificaciones, etc.). Esta capa ha sido diseñada para simplificar la reutilización de componentes. Las aplicaciones pueden publicar sus capacidades y otras pueden hacer uso de ellas (sujetas a las restricciones de seguridad). seguridad). Este mismo mecanismo permite a los usuarios remplazar componentes. componentes. Una de las mayores fortalezas del entorno de aplicación de Android es que se aprovecha el lenguaje de programación Java. El SDK de Android no acaba de ofrecer todo lo disponible para su estándar del entorno de ejecución Java (JRE), (JRE), pero es compatible con una fracción muy significativa de la misma. Los servicios más importantes que incluye son: son:
28
•
Views: componentes). Views: extenso conjunto de vistas (parte visual de los componentes).
•
Resource Manager: Manager: proporciona acceso a recursos que no son en el código. código.
Visión general yy entorno de de desarrollo desarrollo • Activity Manager: Manager: maneja maneja el el ciclo ciclo de de vida vida de de las las aplicaciones aplicaciones yy proporciona un sistema sistema de de navegación navegación entre entre ellas. ellas. •
Notification Manager: Manager: permite permite aa las las aplicaciones aplicaciones mostrar mostrar alertas alertas persopersoNotification nalizadas en la barra barra de de estado. estado.
• Content Providers: Providers: mecanismo mecanismo sencillo sencillo para para acceder acceder aa datos datos de de otras otras aplicaciones (como los contactos). contactos).
1.4.5. Aplicaciones Aplicaciones Este nivel está formado por por el el conjunto conjunto de de aplicaciones aplicaciones instaladas instaladas en en una una máquina máquina Android. las aplicaciones aplicaciones han han de de ser ser ejecutadas ejecutadas en en lala máquina máquinavirtual virtual Dalvik Dalvik Android. Todas las para garantizar la la seguridad seguridad del del sistema. sistema. Normalmente, las aplicaciones aplicaciones Android Android están están escritas escritas en en Java. Java. Para Para desarrollar aplicaciones aplicaciones en en Java Java podemos podemos utilizar utilizar el el Android Android SDK. SDK. Existe Existe otra otra opción consistente en desarrollar desarrollar las las aplicaciones aplicaciones utilizando utilizando C/C++. C/C++. Para Para esta esta el Android Android NDK NDK (Native (Native Development DevelopmentKit). Kit). opción podemos utilizar utilizar el
Ü
Poli[Media]: La arquitectura arquitectura de de Android. Android. Poli Medía : La
Preguntas de repaso yy reflexión: reflexión: La La arquitectura arquitectura de de Android. Android.
e
Enlaces de interés: Android, Android, /OS, iOS, tiempos tiempos de de respuestas respuestas yy por por de interés: qué nada es gratis en en sistemas sistemas informáticos. informáticos. (Ricardo (Ricardo Galli). Galli). Interesante artículo artículo que que explica explica varios varios aspectos aspectos relacionados relacionados sobre sobre elel funcionamiento interno interno del del sistema sistema operativo operativo Android: Android: http://gallir. wordpress. com/20 11 /12/0 7/android-ios-tiempos-de-respuestashttp://qallir.wordpress.com/2011/12/07/android-ios-tiempos-de-resDuestasy-por -q ue-nada-es-g ratis-en-sistemas-i nformaticos/ v-por-que-nada-es-qratis-en-sistemas-informaticos/
1.5. Instalación Instalación del 1.5. del entorno entorno de de desarrollo desarrollo Para el desarrollo de las las aplicaciones aplicaciones vamos vamos aa poder poder utilizar utilizar un un potente potenteyymoderno moderno entorno de desarrollo. desarrollo. Al igual igual que que Android, Android, todas todas las las herramientas herramientas están están basadas basadas en software libre. libre. Aunque Aunque existen existen varias varias alternativas alternativas para para desarrollar desarrollar aplicaciones aplicaciones texto se se supondrá supondrá que que estamos estamos trabajando trabajando con con elel software software en Android. Android. En este texto enumerado aa continuación; continuación: • Java Runtime Environment Environment 5,0 5.0 oo superior. superior. •
IDE for for Java Java Developers). Developers). Eclipse (Eclipse IDE
29
El gran libro de Android • Android SDK (Google). (Google). •
Eclipse Plug-in (Android Development Toolkit- ADT). ADT).
Describiremos, continuación, el proceso a seguir para instalar el software Describiremos, a continuación, anterior. desarrollo. La anterior. Te proponemos dos alternativas para instalar el entorno de desarrollo. separado, la segunda es instalar primera es instalar cada componente por separado, MOTODEV Studio que incorpora todos estos componentes y alguna herramienta adicional.
1.5.1. Instalación de los componentes por separado Si ya tienes instalado Eclipse en tu ordenador puedes completar la instalación Plug-in. De esta forma mantendrás tu añadiendo Android SDK y Eclipse Plug-in. configuración actual y simplemente añadirás nuevas funcionalidades. funcionalidades. Si no es tu caso te recomendamos pasar al siguiente apartado e instalar MOTODEV Studio. Studio.
1.5.1.1. Instalación de la máquina virtual Java Este software va a permitir ejecutar código Java en tu equipo. equipo. A la máquina virtual Java, Java Runtime Java también se la conoce como entorno de ejecución Java, Environment (JRE) o Java Virtual Machine (JVM). (JVM). Muy posiblemente ya tengas instalada la máquina virtual Java en tu equipo. equipo. Si es así puedes pasar directamente al punto siguiente. siguiente. En caso de dudas, dudas, puedes pasar también al punto siguiente. Al concluirlo te indicará si la versión de la máquina virtual Java es incorrecta. incorrecta. En caso necesario, necesario, regresa a este punto para adecuada. instalar la versión adecuada. Para instalar la máquina virtual Java accede a httD.//iava http://java.com/es com/es /download/ y descarga e instala el fichero correspondiente a tu sistema operativo. operativo.
1.5.1.2. Instalación de Eclipse Eclipse resulta el entorno de desarrollo más recomendable -ecomendable para Android, Android, es libre y además es soportado por Google (ha sido utilizado por los desarrolladores de Google para crear Android). Android). La versión mínima es la 3.3.1 3.3.1..
Ejercicio paso a paso: Instalación de Eclipse. Para instalar Eclipse hay que seguir los siguientes pasos: pasos: 1.
Accede a la página http://www.eclipse.ora/downloads/ http://www.eclipse.org/downloads/ y descarga la última versión de "Eclipse IDE para desarrolladores Java". Java". Verás que se utilizados, como encuentra disponible para los sistemas operativos más utilizados, Windows, Windows, Linux y Mac OS. OS.
NOTA: en este texto hemos utilizado la versión Helios para Windows 32 bits (fichero: "ec/ipse-java-indigo-win32.zip "eclipse-java-indigo-win32.zip "). ").
30
Visión general yy entorno entorno de de desarrollo desarrollo 2.í.
software no no requiere requiere una una instalación instalación específica, específica, simplemente simplemente Este software descomprimir los los ficheros en en la la carpeta carpeta que que prefieras. prefieras. Si Si así así lolo deseas deseas un acceso acceso directo directo del del fichero fichero eclipse.exe eclipse.exe en en elel escritorio escritorio oo puedes crear un en el menú inicio. inicio.
NOTA: Si al ejecutar Eclipse te aparece aparece el elsiguiente siguiente mensaje: mensaje:
A Java Runtime Envwonment (JRE) or Java Devetopment Kit (JDK) must m u~ be b~ avarlabte availablt: rn in order ord~ to to run: run Eclipse. Eclip~. No NoJava J4vavirtual virt061machine machine wa:< found after afte.r seatchtng searchlng tbe the fottowing followinglocations: was found tocstioRS C:\PfDgram FitesXec lipsejee\jre\bin\javaw.c)íe 0\P·mgram Files\ecli:pseje.e\jre\bin\j~w. rxe javaw.exe inin your iav•w.exe your current current PATH PATH A Javil Runtim~ Eovironme:nt (JRE} or Java. Oe\fefopme:nt Kit {JOKJ
tenemos instalada instalada la la máquina máquina virtual virtualJava Java (o (o la la versión versión no noes es lala Nos indica que no tenemos adecuada). Para solucionarlo solucionarlo regresa regresa al alpunto punto anterior. anterior.
3.
Eclipse comenzará comenzará preguntándonos preguntándonos que que carpeta carpeta queremos queremos Al arrancar Eclipse En esta esta carpeta carpeta se se almacenarán almacenarán los los proyectos proyectos utilizar como workspace. En su ubicación ubicación para para Eclipse. Es Es importante importante que que conozcas conozcas su que crees en Eclipse. poder hacer copias de de seguridad seguridad de de los los proyectos. proyectos.
S*l«ct a workspace ¿ctipie itam yc-nt ftojects tn a foicei caüeá a vwrtspací. CKoose » v*c«fopscí fotder to om fot thís teísion wotitptuo: cn.UsefS^to:«M\v»rt>rt:$p4íc Uít tt«í sí the
4.
«oa do not sík <»^»o
Aparecerá una un vistazo vistazo alal una ventana ventana de de bienvenida. bienvenida. Ciérrala Ciérrala yy dele dele un entorno de desarrollo. desarrollo.
1.5.1.3. Instalar Android Android SDK SDK de de Google Google El siguiente paso va aa consistir consistir en en instalar instalarAndroid Android SDK SDK de de Google, Google.
% Ejercicio paso aa paso: paso: Instalación Instalación de de Android Android SDK. SDK. i. 1.
Accede a la siguiente siguiente página página http://developer.android.com/sdk http://developer.android.com/sdkyydescarga descargaelel fichero correspondiente correspondiente aa tu tu sistema sistema operativo. operativo.
". NOTA: En este texto hemos hemos utilizado utilizado el elfichero fichero "android-sdk_rI2-windows.zip "android-sdk_r/2-windows.zip".
31
El gran libro de Android Android 2. 2.
no requiere requiere una una instalación instalación específica, específica, simplemente simplemente Este software no descomprimir los ficheros ficheros en en la la carpeta carpeta que que prefieras. prefieras.
NOTA: En algunos alRunos sistemas sistemas tendremos tendremos problemas problemas cuando cuando la la ruta ruta donde donde se se
descomprime los ficheros ficheros contiene contiene un un espacio espacio en en blanco. blanco.
3.
programa sdk SDK Manager. rv1anage:r. Ejecuta el programa
NOTA: Es posible que te te aparezca el el siguiente siguiente error: error:
\ fetchr-s Ktps ¡//eS-sr-í. gcK^c.co»r!/^<írt»á<¡repG«fe> ifeposfát'pwi | Faé&d fefch Uftt rsasoñ;toHTTPS SSt httiK;/í<3-stó.«íso^.cam^ár<^^s>sitsifyA«pfiis:tofy.w*á, m
En tal caso, hay que forzar al al programa prowama aa utilizar utilizar el el protocolo protocolo http http en en lugar lugar del del sigue los los siguientes siguientespasos: pasos: ello sigue protocolo https. Para ello
4. 4.
•
Re.fresh Sources. Sources. Cierra la ventana Refresh
•
ventana Choose Choose Packages Packages to to Install. Insta//. Pulsa Cancel en la ventana
•
SDKand and Settings en en la la parte parte izquierda izquierda de de la la ventana ventana Android AndroidSDK Selecciona Settings A VD Manager. Manager.
•
checkbox Forcé Force https://... https:/1. .. sources sources to to be befetched fetchedusing usinghttp://... http:/1. .. Marca el checkbox
•
Apply. Pulsar Save and Apply.
•
ejecutar el elprograma p rograma SDK. SDK Manager. Manager. Cierra yy vuelve aa ejecutar
Seleccionar los paquetes paquetes aa instalar. instalar. Seleccionar
¡ y: ¿Adroid SCK PfcüftHm-tMtt, i; inVv Ovjíiinwítlífcrx* A., O.<\n:uoid2.U, fM~. •~. An»«>i4 ¿.IX APtd, 1i X X SOK ~Mf<>rm Anáoal A>1ifoi:d22. U. API APJ"3 AH? í « 50.< An4«c«JiX. AK ?. «e.. ,\Pttlt:: í vV'SI.n:~tJtfo•v·,t,n..~I(I">1U', Atvíioai }2:. /vPÍ*. re.. ( Al>ll í vv"Sm:l)Wfo:mAAih"cdl.S S0« Plitfo.--. A»á«>:d U. API 3. »„ : VV Sís.r.·>:;:(iks !UíIC$ SOS SOKAPs 13, «visión 11 .. A...
Aparecerá una ventana ventana donde donde podremos podremos seleccionar seleccionar los los paquetes paquetes aa instalar. deseas puedes puedes instalar instalar todos todos los los paquetes paquetes (Accept (AcceptAlí)Al~ ; en en instalar. Si lo deseas
32
Visión general yy entorno de desarrollo este caso el proceso de instalación instalación puede tardar tardar más más de de una una hora. hora. Si Si no no dispones de tanto tiempo puedes seleccionar seleccionar solo solo algunos algunos paquetes, paquetes, por por ejemplo los que se muestran en la captura anterior. anterior. Más Más adelante adelante podrás podrás instalar más paquetes si necesitas necesitas otras otras plataformas plataformas de de desarrollo desarrollo uu otras máquinas virtuales. virtuales. 5.
Crea un nuevo dispositivo virtual virtual Android Android (AVD): (AVD}: un un dispositivo dispositivo virtual virtual Android te permite emular en tu ordenador ordenador cualquier cualquier tipo tipo de de dispositivos dispositivos móvil. De esta forma podrás probar probar tus aplicaciones aplicaciones en en gran gran variedad variedad de de tabletas. teléfonos y tabletas.
6.
Selecciona Virtual Devices en la parte parte izquierda izquierda de de la la ventana ventana Android Android SDK SDK andA VD Manager. Pulsa a continuación continuación el botón botón New. New. Aparecerá Aparecerá la la siguiente siguiente and AVD ventana: ventana:
Proptríy Vaíae V.llut: Ahiteiíttá LCD eUnitty ¿tO 1>10 Max \fM VM apptícawon Max ap~atlt!n he*,,, hu... ¿i 2:4 Prop~rt¡
Abrtu
Donde tendremos que introducir los siguientes siguientes datos: datos:
•
Ñame: Nombre Nombre que quieras Name: quieras dar dar al nuevo nuevo dispositivo dispositivo virtual. virtual.
•
Target: Versión SDK que soportará el el dispositivo. dispositivo.
•
SD Card: Podemos introducir el el tamaño tamaño de de la la tarjeta tarjeta SD SO usada usada SO en el emulador y de forma opcional indicar indicar el el fichero fichero donde donde almacenará los datos. datos. No debes excederte excederte en en la la cantidad cantidad de de memoria, ésta se reserva en el disco memoria, disco duro, duro.
•
Snapshot: Si lo seleccionas podrás podrás congelar congelar la la ejecución ejecución del del dispositivo en un determinado instante. instante. Más Más tarde tarde podrás podrás retomar la ejecución en ese ese mismo mismo instante, instante, sin sin tener tener que que esperar a que se inicie el dispositivo. dispositivo.
•
Skin: Podremos seleccionar la la resolución de de la la pantalla, pantalla, indicando indicando uno de los valores predefinidos predefinidos o una una resolución resolución personalizada. personalizada.
• Hardware: Permite definir las las características características hardware hardware del del dispositivo. si dispone dispone de de GPS, GPS, dispositivo. Podemos indicar cosas como si
33
El gran libro de Android teclado físico, físico, etc. etc. No No es es imprescindible imprescindible que que definas definas estas estas si quieres quieres probar probar un un programa programa que que características. decir, si características. Es decir, haga uso del GPS GPS no no resulta resulta imprescindible imprescindible que que en en elel AVD AVD hayas indicado que dispone dispone de de GPS. GPS. Create AVD. Una vez introducida la la configuración configuración pulsa pulsa el el botón botón CreateAVD.
~---------·-------~ V' A Y~lid o!.r..d:1'0i~ Virtwl 0t'>&..~. ~Ú A t~abl~ Andmld Virtual Ob\c.f'~
v A valiít Ar^tttíd Vírtuat Devíce. A ftp&tabl* Anáiexá VirUial K An Anátoxj Vírttíei f «led totokted. efatis' to10see lite Vírtwl Dwce thit thatfaile:f krcd.Cíftk Clitk'D ' Dda:íl$' the«roí. ftros,
)(
AuArtdro~
Otv~(e
$U
Una vez creado el el emulador emulador (AVD), (AVD), podremos podremos ponerlo ponerlo en en ejecución ejecuc1on seleccionándolo de de la la lista lista yy pulsando pulsando el el botón botón Start... Start ... Aparecerá Aparecerá lala ventana Launch Options. Optíons. Pulsa Pulsa el el botón botón Launch. Launch. Puede Puede tardar tardar unos unos minutos en arrancar. arrancar.
j.*
i U s b 1 8 J ___ i¥ ó ¡A 5 io \f G H i ❖ Z ik IcTv 8
[Ai
7 ¡y j k
\t jr K \u \t
■
a !ft fiL ifiy i Í
i i>
NOTA: El emulador mostrado mostrado no no está está previsto previsto para para duplicar duplicar un un dispositivo dispositivo en en particular, sino para para tratar tratar algunas algunas de de las las características características principales. principales. Algunas Algunas características de hardware hardware no no están están disponibles disponibles en en el el emulador, emulador, por por ejemplo, ejemplo, elel multi-touch o los sensores.
34
Visión general y entorno de de desarrollo desarrollo
1.5.2. Instalación del del plug-in plug-in Android Android para para Eclipse Eclipse (ADT) (ADT) El último paso consiste consiste en en instalar instalar el el plug-in plug-in Android Android para para Eclipse, Eclipse, también tambiénconocido conocido como ADT. Este software desarrollado desarrollado por por Google, Google, instala instala una unaserie seriede decomplementos complementos en Eclipse, de forma forma que que el el entorno entorno de de desarrollo desarrollo se se adapte adapte alal desarrollo desarrollo de de aplicaciones para Android. Android. Se Se crearán crearán nuevos nuevos botones, botones, tipos tipos de de aplicación, aplicación, vistas, vistas, etc., para integrar Eclipse Eclipse con con el el Android Android SDK SDKque queacabamos acabamosde deinstalar. instalar.
P
Ejercicio paso paso aa paso: paso; Instalación Instalación del delplug-in plug-inAndroíd Androidpara para Eclipse (ADT).
Para instalar el plug-in plug-in Android Android sigue sigue los los siguientes siguientes pasos: pasos; 1.
En el cuadro cuadro de de diálogo diálogo Avai/ab/e Available Software Software que que aparece, aparece, haz haz clic clic en en Add ... En el cuadro de Add... de diálogo diálogo Add Add Site Site que que sale sale introduce introduce un un nombre nombre para el sitio remoto (por (por ejemplo, ejemplo, P/ug-in Plug-in Android) Android) en en elelcampo campoName. Ñame. En En el campo Location, introduce introduce la la siguiente siguiente URL: URL: http://dl-ssl.google .com/android/eclipse/ http://dl-ssl.google,cora/android/eclipse/
NOTA: Si tienes algún problema problema en en adquirir adquirir el elplug-in, plug-in, puedes puedes intentar intentarutilizar utilizarhttps https en el URL en vez de http. Finalmente K. Finalmente pulsa pulsa O OK.
cuadro de de diálogo diálogo Available Available Software Software debe debe aparecer aparecer Ahora en el cuadro Developer Too/s Tools en en la la lista. lista. AvaUabte Software Chíck the it«ms that you
to msts» ▼j
Worfc with; Anarotü find mcrt software bywotking yrith the
Adó,.. \ pttftrtfíces.
; typ* í-fié? text I?; í&í Tocts • W1 ~00 D«vetep«r ~·ptrToal~ l!il ít> Android Andn,¡d Dl>MS Ü ¡4? DDMS
i2.y.y,vií)110D2alS2y-i3S4íI np.o.vm10628I92&- i m 21 12.0.D.y50110é>28192§Í38431 ll.O.O.v2611Jl6l81929·13843l 12J),0.v201I<»2S292$-13M51 Wl.O.vl01106281929·1J8431 126.0:...l011062819N-H801
12.Q.O.vl!lll06Ul1~~1380l
4 itwi seitoted
o...íls
; j Hifirnt•llei:l «he«dy miwlted m Show oniy (mst veritcm cf ervwUbie software D ^ Group ítems by cstegory What ~ tisurftírnMIIfdt O Show software appfit:abl~ appítíabíe t.ototafg« tsrgetBT~o.mnen.t envuonrrtent B snow oniy o~ s:oftwan @ Contad al m Contafl ai) up
f «f
Cancel
35
El gran libro de Android 3.
Selecciona los paquetes a instalar y pulsa Next. Ahora aparecen listadas las características de Android DDMS y Android Development Tools. Tools.
4.
Pulsa Next para leer y aceptar la licencia e instalar cualquier dependencia y pulsa Finish. Finish.
5.
Reinicia Eclipse.
S. 6.
Configura Eclipse para que sepa donde se ha instalado el Android SDK. SDK. Windows>Preferences... .. . y Para ello entra en las preferencias en Windows>Preferences selecciona Android del panel de la izquierda. Ahora pulsa Browse... Browse ... para selecciona el SDK Location y elige la ruta donde hayas descomprimido Android SDK. SDK. Aplica los cambios y pulsa OK. OK.
Android Preferentes SDK location.' C;\Andfotd\andro»d-sdk;-wlndows | Sfowsfc-w Mote The list of SDK Target5 beíov? h onfy reíoaded once you hit 'Apply' or 'OK'. Target Mame
Vendor
Ándfoídl.5 Andtoidl.S Andfcld LS Andtoidl.6
Android Sour
Andtoid 23.3 Android 233
t>p Help
Install/lípdate r•P !nstalVUpdate
Android3J. Android 32
p P Java p Maven t> Maven
Pletfcrm API... 3 44 10 10 13 13
15 1.5 1.6 2.33 233 3.2 32
Restorc Defauits i
p~ Mylyn Myf)
1.5.3. Instalación con MOTODEV St udio Studio MOTODEV Studio for Android es un entorno de desarrollo creado por Motorola para el desarrollo de aplicaciones Android. Android. Se basa en Eclipse y añade una serie de características adicionales. sencilla. adicionales. Es la opción de instalación más sencilla.
Recursos adicionales: Características adicionales de MOTODEV Studío Studio no incluidas en Eclipse. Instalación más sencilla: Un solo instalador y conseguirás consegwras disponer de Eclipse IDE, lOE, herramientas Java y plugins de Androi-j Android perfectamente integrados. integrados. Si ya tienes Eclipse instalado puedas puedes plugin. instalar también MOTODEV Studio como plugin.
36
Visión general y entorno de desarrollo configure~ Configure» MpMwuMj liiiiiM
Validación Validación de de la la aplicación: aplicación: Detectar Detectar yy reparar reparar condiciones condiciones inadecuadas, tales como permisos permisos que que faltan faltan yy configuraciones configuraciones con las las especificaciones especificaciones del del dispositivo. dispositivo. que están en conflicto con Fragmentos de código: Agrega código código para para resolver resolver tareas tareas frecuentes. Ejemplo: enviar SMS, mostrar un un Toast, Toast, hacer hacer vibrar vibrar el el teléfono, etc.
s···a B Q
cupcake Cupcake Gestor de bases de de datos: Permite Permite ver ver yy editar editar las las bases bases de de i ·L aplicaciones Android. Android. -Q. Load 0ac| datos SQLite para tus aplicaciones = ···.Q EJ MB200
□H avd ············ Emulador Emulador integrado integrado en en el el entorno entorno de de desarrollo: desarrollo: Prueba Prueba tus tus aplicaciones sin cambiar del entorno de de desarrollo desarrollo al al emulador emulador del del p11, GB2.3.3 ,-or, o o terminal. Video Tutoriales: MOTODEV Studio dispone dispone de de muchos muchos tutoriales tutoriales que se puede ver desde el interior del del entorno entorno de de desarrollo. desarrollo.
Traducido al castellano: Si Si tu tu ingles ingles no no es es muy muy bueno bueno puedes puedes instalar la versión en en castellano castellano
^
ñ 11
la creación de aplicaciones: aplicaciones: Crea Crea nuevos nuevos Asistentes para la NeMWkfeet proyectos y clases esenciales esenciales de de Android Android mediante mediante sencillos sencillos asistentes. 4kt*emActMt¥ as'stentes ^ ÜIL
~ Test
i
Deja que que Studio Stud/o MOTODEV MOTODEV Asistente de generación de código: Deja Java, Sólo Sólo tiene tiene que que describir describir genere parte del código repetitivo de Java. la lógica de negocio. Herramientas de diagnóstico: Utiliza las las avanzadas avanzadas herramientas herramientas de diagnóstico para detectar problemas de de memoria memoria yy probar probar las las aplicaciones antes de su distribución.
• ··... • Traducción automática de aplicaciones: Si Si quieres quieres que que tu tu idiomas, esta esta herramienta herramienta aplicación esté disponible en múltiples idiomas, te facilitará el trabajo. !tSJflá~Et'J!l'~· ~··fJ)J ··· ·. • te Transíate celjs) facilitará el trabajo.
necesitas algo algo más más de de velocidad velocidad Escribe aplicaciones nativas: Si necesitas con Native Native Development Development Kit Kit puedes escribir aplicaciones nativas con (NDK).
37
El gran libro de Androíd Android
e ~
Práctica: Studío for Android. Android. Práctica: Instalación de MOTODEV Studio
1.
(http://developer.motoAbre la página Web MOTODEV Studio for Android (http://developer.motorola. com/tools/motodevstudio/). rola.com/tools/motodevstudio/).
2.
Descarga el software adecuado según según la la versión versión de de tu tu sistema sistema operativo. operativo.
3.
Sigue las instrucciones de instalación. instalación.
Recursos adicionales: adicionales: Teclas de acceso acceso rápido rápido imprescindibles. imprescindibles. Ctri+O: no resueltas. resueltas. Ctrl+O: Añade imports de las clases no
Ctrl+F: Formatea automáticamente el código. Ctri+F: código. Ctri+Espacio: completar. Ctrl+Espacio: Auto completar.
$
Enlaces de interés: interés: • Página oficial de Eclipse: Eclipse: Podrás encontrar todas todas las las versiones versiones ee información sobre los proyectos proyectos Eclipse. Eclipse. http://www.eclipse.org/
•
Mí Interesante si si quieres quieres sacarle sacarle el el Mi primera hora con Eclipse: Interesante máximo provecho a esta herramienta, herramienta, aunque mucho mucho de de lo lo que que se se explica no resulta imprescindible para el el curso. curso. http://ubuntulife.files.wordpress.com/2008/03/intro eclipse http:l/ubuntulife.files.wordpress.com/2008/03/intro eclipse espanol.pdf espanol.pdf
•
MOTODEV Studio for Android: Puedes Puedes verificar verificar si si hay hay nuevas nuevas versiones en la página oficial y visionar visionar video-tutoriales. video-tutoriales. http://developer.motorola.com/docstools/motodevstudio/ http://developer.motorola.com/docstools/motodevstudio/
1.6. Las versiones versiones de de Android Androi yy niveles niveles de de API API 1.6. Las Antes de empezar a proyecto en Android hay hay que que elegir elegir la la versión versión del del sistema sistema para la que deseamos realizar la la aplicación aplicación. Es Es muy muy importante importante observar observar que que hay hay clases y métodos que que están disponibles a partir partir de de una una versión. versión. Si Si las las vamos vamos aa usar, mínima necesaria. necesaria. usar, hemos de conocer la versión mínima Cuando se ha lanzado una nueva plataforma plataforma siempre siempre ha ha sido sido compatible compatible con con las las versiones anteriores. anteriores. Es decir, solo se se añaden añaden nuevas nuevas funcionalidades funcionalidades y, y, en en el el caso caso
38
Visión general yy entorno entorno de de desarrollo desarrollo de modificar alguna funcionalidad, funcionalidad, no no se se elimina, elimina, se se etiquetan etiquetan como como obsoletas obsoletas pero pero se pueden continuar utilizando. utilizando. A continuación se describen describen las las plataformas plataformas lanzadas lanzadas hasta hasta lala fecha fecha con con una una breve descripción descripción de de las las novedades novedades introducidas. introducidas. Las Las plataformas plataformas se se identifican identificande de El nivel nivel de de API API tres formas alternativas: alternativas: versión, versión, nivel nivel de de API API yy nombre. nombre. El enteros comenzando comenzando desde desde 1.1. Para corresponde a números números enteros Para los los nombres nombres se se han han elegido postres en orden orden alfabético alfabético CupcaKe Gupcake (vi.5), (v1 .5), Donut Donut (vi.6), (v1.6), Éclair Éclair (v2.1), (v2.1), Ice Cream Cream (v2.4), (v2.4), etc. etc. Las Las Froyo (v2.2), Gingerbread Gingerbread (v2.3), (v2.3), Honeycomb Honeycomb (v3.0), (v3.0), Ice las letras letras AA yy B,8 , no dos primeras versiones, versiones, que que hubieran hubieran correspondido correspondido aa las no recibieron nombre.
1.6.1. Android 1.0 1.0 Nivel Nivel de de AP11 API 1 (septiembre (septiembre 2008) 2008) Primera versión de de Android. Android. Nunca Nunca se se utilizó utilizó comercialmente, comercialmente, por por lolo que que no no tiene tiene desarrollar para para esta esta plataforma. plataforma. mucho sentido desarrollar
1.6.2. Android 1.1 1.1 Nivel Nivel de de API API 22 (febrero (febrero 2009) 2009) No se añadieron apenas apenas funcionalidades, funcionalidades, simplemente simplemente se se fijaron fijaron algunos algunos errores errores queremos desarrollar desarrollar una una anterior. Es Es la la opción opción aa escoger escoger sisi queremos de la versión anterior. aplicación compatible compatible con todos todos los los dispositivos dispositivos Android. Android. No No obstante obstante apenas apenas existen usuarios con esta esta versión. versión.
1.6.3. Android 1.5 1.5 Nivel Nivel de de API API 33 (abril (abril 2009, 2009, Cupcake) Cupcake) Es la primera primera versión versión con con algún algún usuario usuario (un (un 1,3% 1,3% en en julio julio del del en novedades, incorpora incorpora la la posibilidad posibilidad de de teclado teclado en 2011). 2011). Como novedades, pantalla con predicción predicción de de texto, texto, los los terminales terminales ya ya no no tienen tienen que que ÉÉÚSItikk. tener un teclado físico, así así como como la la capacidad capacidad de de grabación grabación widgets de de avanzada de audio audio yy vídeo. vídeo. También También aparecen aparecen los los widgets escritorio y Uve live folders. Incorpora Incorpora soporte soporte para para bluetooth bluetooth estéreo, estéreo, por lo que permite permite conectarse conectarse automáticamente automáticamente aa auriculares auriculares bluetooth. Las transiciones entre bluetooth. entre ventanas ventanas se se realizan realizan mediante medianteanimaciones. animaciones.
1.6.4. Android 1.6 1.6 Nivel Nivel de de API API 44 (diciembre (diciembre 2009, 2009, Donut) Donut) Permite capacidades capacidades de de búsqueda búsqueda avanzada avanzada en en todo todo elel gestures yy multi-touch. multi-touch. Permite Permite dispositivo. También incorpora incorpora gestures dispositivo. También J la síntesis de texto aa voz. voz. También También facilita facilita que que una una aplicación aplicación pueda trabajar con diferentes diferentes densidades densidades de de pantalla. pantalla. Soporte Soporte 4 un nuevo nuevo atributo atributo X"' para resolución de pantallas pantallas WVGA. 'NVGA. Aparece Aparece un XML, onClick, que puede \ XML, puede especificarse especificarse en en una una vista. vista. Se Se mejora Play Store, antes antes Android Android Market, Market, permitiendo permitiendo una una búsqueda más sencilla de de aplicaciones. aplicaciones. Soporte Soporte para para CDMA/EVDO, CDMNEVDO, 802.1x 802.1x yy VPNs. Mejoras en la aplicación aplicación de de la la cámara. cámara. VPNs.
39
El gran libro de Android
1.6.5. 2.0 Nivel Nivel de de API API 55 (octubre (octubre 2009, 2009, Éclair) Éclair) 1.6.5. Android 2.0 Esta versión de API apenas cuenta cuenta con con usuarios, usuarios, dado dado que que la mayoría de fabricantes pasaron pasaron directamente directamente de de lala versión 1.6 a la 22.1. novedades cabría cabría destacar destacar que que 1. Como novedades para manejar manejar bluetooth bluetooth 2.1 2.1 . Nueva Nueva incorpora un API para funcionalidad que permite permite sincronizar sincronizar adaptadores adaptadores para para íi Ofrece un conectarlo a cualquier cualquier dispositivo. dispositivo. Ofrece un servicio servicio Vv ■ ■■■ i'--r la gestión gestión de de contactos contactos yy ofrece ofrece más más centralizado de manejo manejo de cuentas. cuentas. Mejora Mejora la Se optimiza optimiza la la velocidad velocidad de de hardware. hardware. Se Se aumenta aumenta elel número número ajustes en la cámara. Se del navegador navegador yy de tamaños de ventana yy resoluciones resoluciones soportadas. soportadas. Nueva Nueva interfaz interfaz del soporte para HTML5. HTML5. Mejoras Mejoras en en el el calendario calendario yy soporte soporte para para Microsoft Microsoft Exchange. Exchange. La clase MotionEvent MotionEvent: ahora soporta soporta eventos eventos en en pantallas pantallas multitáctil. multitáctil.
1.6.6. 2.1 Nivel Nivel de de API API 77 (enero (enero 2010, 201 O, Éclair) Éclair) 1.6.6. Android 2.1 Se considera una actualización actualización menor, menor, por por lo lo que que le le siguieron siguieron llamando llamando Éclair. Éclair. Destacamos el reconocimiento de de voz voz que que permite permite introducir introducir un un campo campo de de texto texto teclado. También También permite permite desarrollar desarrollar fondos fondos de de pantalla pantalla sin necesidad de utilizar utilizar el teclado. animados. información sobre sobre la la señal señal de de lala red red actual actual que que animados. Se puede obtener información posea el dispositivo. dispositivo. En el el paquete paquete WebKit WebKit se se incluyen incluyen nuevos nuevos métodos métodos para para en Web. Web. También También se se permite permite obtener obtener datbs almacenadas almacenadas en manipular bases de de datos en WebView. WebView. Incorpora Incorpora mecanismos mecanismos permisos de geolocalización geolocalización yy modificarlos modificarlos en para administrar la la configuración configuración de de la la caché caché de de aplicaciones, aplicaciones, almacenamiento almacenamiento la resolución de de la la pantalla. pantalla. También web y modificar la También se se puede puede manejar manejar vídeo, vídeo, historial de navegación, navegación, vistas personalizadas, personalizadas, etc. etc.
1.6.7. Android 2.2 2.2 Nivel Nivel de de API API 88 (mayo (mayo 2010, 2010, Froyo) Froyo) Como característica más destacada destacada se se puede puede indicar indicar la la mejora de velocidad de de ejecución ejecución de de las las aplicaciones aplicaciones la CPU CPU de de 22 aa 55 veces veces más más rápido rápido (ejecución del código de la de acuerdo acuerdo aa varios varios benchmarks). benchmarks) . Esto Esto que en la versión 2.1 de introducción de de un se consigue con la introducción un nuevo nuevo compilador compilador JIT JIT de la máquina Dalvik. Dalvik.
^
jÉSl
Se añaden varias mejoras mejoras relacionadas relacionadas con con el el soporte de de Adobe Adobe Flash Flash 10.1 10.1 yy la la navegador Web, Web, como el soporte incorporación del motor motor Javascript Javascript V8 V8 utilizado utilizado en en Chrome, Chrome, oo la la incorporación incorporación del del campo de "subir fichero" en un un formulario. formulario. El desarrollo de aplicaciones aplicaciones permite permite las las siguientes siguientes novedades: novedades: se se puede puede preguntar al usuario usuario si si desea desea instalar instalar una una aplicación aplicación en en un un medio medio de de almacenaalmacenamiento externo (como una una tarjeta tarjeta SD), SD), como como alternativa alternativa aa lala instalación instalación en en lala Las aplicaciones aplicaciones se se actualizan actualizan de de forma forma memoria interna del del dispositivo. dispositivo. Las un servicio servicio para para lala automática cuando aparece una una nueva nueva versión. versión. Proporciona Proporciona un la propia propia aplicación aplicación para para copia de seguridad de de datos datos que que se se puede puede realizar realizar desde desde la el mantenimiento mantenimiento de de sus sus datos. datos. Por Por último, último, facilita facilita que que las las garantizar al usuario usuario el el reconocimiento reconocimiento de de voz voz yy que que terceras terceras partes partes aplicaciones interaccionen interaccionen con con el proporcionen nuevos motores de de reconocimiento. reconocimiento.
40
Visión general yyentorno entorno de de desarrollo desarrollo Se mejora la conectividad: conectividad: ahora ahora podemos podemos utilizar utilizar nuestro nuestro teléfono teléfono para para dar dar (tethering), tanto tanto por por USB USB como como por por Wi-Fi. Wi-Fi. acceso a Internet aa otros otros dispositivos dispositivos (tethering), También se añade el soporte soporte aa Wi-Fi Wi-Fi IEEE IEEE 802.11n. 802.11 n. Se añaden varias mejoras mejoras en en diferentes diferentes componentes: componentes: en en elel API API gráfica gráfica OpenGL OpenGL ES se pasa a soportar soportar la la versión versión 2.0. 2.0. También También puede puede realizar realizar fotos fotos oo vídeos vídeos en en cualquier orientación orientación (incluso (incluso vertical) vertical) yy configurar configurar otros otros ajustes ajustes de de lala cámara. cámara. Para Para finalizar, permite definir finalizar, definir modos modos de de interfaz interfaz de de usuario usuario ("automóvil" ("automóvil" yy"noche") "noche")para paraque que el modo modo seleccionado seleccionado por porelel usuario. usuario. las aplicaciones se configuren configuren según según el
9 (diciembre 1.6.8. Android 2.3 Nivel Nivel de de API API9 (diciembre 2010, 2010, Gingerbread) Gingerbread) Debido al éxito de Android Android en en las las nuevas nuevas tabletas, tabletas, ahora ahora soporta mayores tamaños tamaños de de pantalla pantalla yy resoluciones resoluciones (WXGA (WXGA y superiores). nuevo interfaz interfaz de de usuario usuario con con un un diseño diseño Incorpora Incorpora un nuevo las mejoras mejoras de de la la interfaz interfaz de de usuario usuario actualizado. Dentro de de las actualizado. Dentro de la la funcionalidad funcionalidad de de "cortar, "cortar, copiar copiaryy destacamos la mejora de pantalla con con capacidad capacidad multitáctil. multitáctil. pegar" y un teclado en pantalla Incluye soporte nativo nativo para para varias varias cámaras, cámaras, pensado pensado en en la segunda cámara usada usada en en videoconferencia. videoconferencia. La La incorporación incorporación de de esta esta segunda segunda cámara ha propiciado la la inclusión inclusión de de reconocimiento reconocimiento facial facial para para identificar identificar alal usuario del terminal. La máquina virtual Dalvik Dalvik para para Android Android introduce introduce un un nuevo nuevo recolector recolector de de las pausas pausas de de la la aplicación, aplicación, ayudando ayudando aa garantizar garantizaruna unamejor mejor basura que minimiza las animación y el aumento de de la la capacidad capacidad de de respuesta respuesta en en juegos juegos yy aplicaciones aplicaciones similares. Se trata de similares. de corregir corregir así así una una de de las las lacras lacras de de este este sistema sistema operativo operativo móvil, que en versiones versiones previas previas no no ha las aplicaciones aplicaciones ha sido sido capaz capaz de de cerrar cerrar bien bien las el desarrollo desarrollo de de código código nativo nativo en desuso. Se dispone dispone de de mayor mayor apoyo apoyo para para el (NDK).También se mejora mejora la la gestión gestión de de energía energía yy control control de de aplicaciones. aplicaciones. YY se se cambia el sistema de ficheros, ficheros, que que pasa pasa de de YAFFS YAFFS aa EXT4. EXT4. el soporte soporte nativo nativo para para telefonía telefonía sobre sobre Entre otras otras novedades novedades destacamos destacamos el Internet VolP/SIP. VoiP/SIP. El soporte soporte para para reproducción reproducción de de vídeo vídeo WebMA/P8 WebMNP8 yycodificación codificación de audio AAC. AAC. El El soporte soporte para para la la tecnología tecnología NFC. NFC. Las Las facilidades facilidades en en elel audio, audio, los desarrolladores desarrolladores de dejuegos. juegos. El gráficos y entradas entradas para los El soporte soporte nativo nativopara paramás más sensores (como giroscopios giroscopios yy barómetros) barómetros) yy un un gestor gestor de de descargas descargas para para las las descargas largas.
1.6.9. Android 3.0 Nivel Nivel de de AP111 API 11 (febrero (febrero 2011, 2011, Honeycomb) Honeycomb) Para mejorar la experiencia experiencia de de Android Android en en las las nuevas nuevas tabletas tabletas se lanza la versión versión 3.0 3.0 optimizada optimizada para para dispositivos dispositivos con con nueva interfaz interfaz de de usuario usuario ha ha sido sido pantallas grandes. grandes. La nueva completamente rediseñada rediseñada con con paradigmas paradigmas nuevos nuevos para para lala interacción, navegación interacción, navegación yy personalización. personalización. La La nueva nueva interfaz interfaz se pone a disposición disposición de de todas todas las las aplicaciones, aplicaciones, incluso incluso las las construidas para versiones anteriores anteriores de de la la plataforma. plataforma.
=
41
El gran libro de Android Android Las principales novedades novedades de de este este SDK SDK son: son: Con el objetivo de de adaptar adaptar la la interfaz interfaz de de usuario usuario aa pantallas pantallas más más grandes grandes se se incorporan las siguientes siguientes características: características: resolución resolución por por defecto defecto WXGA WXGA 30 con con widgets widgets rediseñados, rediseñados, nuevos nuevos componentes componentes yy vistas, vistas, (1280x800}, escritorio 3D (1280x800), escritorio soltar, nuevo nuevo cortar cortar yy pegar, pegar, barra barra de de notificaciones mejoradas, mejoradas, arrastrar arrastrar yy soltar, acciones para que que las las aplicaciones aplicaciones dispongan dispongan de de un un menú menú contextual contextua! siempre siempre presente y otras características características para para aprovechar aprovechar las las pantallas pantallas más másgrandes. grandes. Se mejora la reproducción reproducción de de animaciones animaciones 2D/3D 20/30 gracias gracias alal renderizador renderizador El nuevo nuevo motor motor de de gráficos gráficos Rederscript Rederscript saca saca un un OpenGL acelerado por por hardware. hardware. El gran rendimiento de de los los gráficos gráficos en en Android Android ee incorpora incorpora su su propia propiaAPI. API. Primera versión de de la plataforma plataforma que que soporta soporta procesadores procesadores multinúcleo. multinúcleo. La La máquina virtual Dalvik Dalvik ha ha sido sido optimizada optimizada para para permitir permitir multiprocesado, multiprocesado, lolo que que incluso aquellas aquellas que que son son de de las aplicaciones, aplicaciones, incluso permite una ejecución ejecución más más rápida rápida de de las hilo único. único. Se incorporan varias mejoras mejoras multimedia, multimedia, como como listas listas de de reproducción reproducción M3LI M3U aa través de HTTP Uve Sreaming, Sreaming, soporte soporte aa la la protección protección de de derechos derechos musicales musicales (DRM) y soporte para para la transferencia transferencia de de archivos archivos multimedia multimedia aatravés travésde de USB USBcon con los protocolos MTP MTP yy PTP. PTP. En esta versión se añaden añaden nuevas nuevas alternativas alternativas de de conectividad, conectividad, como como las las nuevas APIS de Bluetooth Bluetooth A2DP A2DP yy HSP HSP con con streaming streaming de de audio. audio. También También se se permite conectar teclados completos completos por por USB USB oo Bluetooth. Bluetooth. El uso de los dispositivos dispositivos en en un un entorno entorno empresarial empresarial es es mejorado. mejorado. Entre Entre las las novedades introducidas destacamos destacamos las las nuevas nuevas políticas políticas administrativas administrativas con con encriptación del del almacenamiento, almacenamiento, caducidad caducidad de de contraseña contraseña yy mejoras mejoras para para administrar los dispositivos dispositivos de de empresa empresa de de forma forma eficaz. eficaz. optimizada para para tabletas, tabletas, Android Android 3.0 3.0 es es A pesar de la nueva interfaz interfaz gráfica gráfica optimizada compatible con las las aplicaciones aplicaciones creadas creadas para para versiones versiones anteriores. anteriores. La La tecla tecla de de menú, en las las nuevas nuevas tabletas, tabletas, es es remplazada remplazada por por un un menú menú que que menú, inexistente en aparece en la barra barra de de acción. acción.
1.6.1 O. 1.6.10.
Android 3.1 3.1 Nivel Nivel de de AP112 API 12 (mayo (mayo 2011) 2011) Android
Permite manejar dispositivos dispositivos conectados conectados por por USB USB (tanto (tanto host host como como dispositivo). dispositivo). Protocolo de transferencia de de fotos fotos yy vídeo vídeo (PTP/MTP) (PTP/MTP) yy de de tiempo tiempo real real (RTP). (RTP).
1.6.11.
Android 3.2 3.2 Nivel Nivel de de AP113 API13 (julio üulio 2011) 2011) Android
Optimizaciones para distintos distintos tipos tipos de de tableta. tableta. Zoom Zoom compatible compatible para para aplicaciones aplicaciones SO. de tamaño fijo. Sincronización Sincronización multimedia multimedia desde desde SD.
42
Visión general yy entorno de desarrollo
1.6.12.
Android 4.0 Nivel Nivel de de AP114 API14 (octubre (octubre 2011, 2011, Ice Cream Sandwich)
La característica más importante es que que se se unifican unifican las las dos dos versiones anteriores (2.x para teléfonos yy 3.x 3.x para para tabletas) tabletas) en una sola compatible con cualquier tipo tipo de de dispositivo. dispositivo. Entre las características más interesantes interesantes destacamos: destacamos: interfaz de de usuario usuario totalmente totalmente Se introduce un nuevo interfaz renovado. ejemplo, se remplazan los los botones botones físicos físicos por por renovado. Por ejemplo, botones en pantalla (como ocurría en las las versiones versiones 3.x). 3.x). Nuevo API de reconocedor facial que que permite, permite, entre entre otras otras muchas muchas en el el reconocimiento reconocimiento de de aplicaciones, teléfono. También También se se mejora mejora en aplicaciones, desbloquear el teléfono. en cuanto cuanto pulsamos pulsamos el el botón. botón. voz. Por ejemplo, se puede empezar a hablar hablar en Aparece un nuevo gestor de tráfico de de datos datos por Internet, Internet, donde donde podremos podremos ver ver el consumo de forma gráfica yy donde podemos podemos definir definir los los límites límites aa ese ese consumo consumo la para evitar cargos inesperados con la la operadora. operadora. Incorpora Incorpora herramientas herramientas para para la edición de imágenes en tiempo real, con herramientas herramientas para para distorsionar, distorsionar, manipular manipular e interactuar con la imagen al momento momento de de ser ser capturada. capturada. Se Se mejora mejora el el API API para para comunicaciones por NFC y la integración integración con con redes redes sociales. sociales. En diciembre del 2011 aparece una una actualización actualización de de mantenimiento mantenimiento (versión (versión 4.0.2) que no aumenta el nivel de API.
1.6.13.
Android 4.0.3 Nivel 15 (diciembre Nivel de de API AP115 (diciembre 2011) 2011)
Se introducen ligeras mejoras en algunas algunas APIs APis incluyendo incluyendo el el de de redes redes sociales, sociales, En marzo marzo calendario, ortográfico, texto aa voz voz yy bases bases de de datos datos entre entre otros. otros. En calendario, revisor ortográfico, 4.0.4. de 2012 aparece la actualización 4.0.4.
1.6.14.
Elección de la la plataforma plataforma de de desarrollo desarrollo
A la hora de seleccionar la la plataforma plataforma de de desarrollo desarrollo hay hay que que consultar consultar sisi necesitamos alguna característica especial especial que que solo solo esté esté disponible disponible aa partir partir de de una una versión. Todos los usuarios con versiones inferiores la seleccionada seleccionada no no podrán podrán versión. inferiores aa la instalar la aplicación. aplicación. Por lo tanto, tanto, es es recomendable recomendable seleccionar seleccionar la la menor menor versión versión posible que nuestra aplicación pueda soportar. soportar. Por Por ejemplo, ejemplo, si si nuestra nuestra aplicación aplicación necesita utilizar varios cursores simultáneos simultáneos en en la la pantalla pantalla táctil táctil (multi-touch), (multi-touch) , tendremos que utilizar la versión 1.6, 1.6, al al ser ser la la primera primera que que lo lo soporta. soporta. Pero, Pero, la la versiones anteriores. anteriores. Para Para ayudarnos ayudarnos aa tomar tomar aplicación no podrá ser instalada en versiones la decisión de que plataforma utilizar utilizar puede puede ser ser interesante interesante consultar consultar los los porcentajes de utilización22..
Figura 3: Dispositivos Android según plataforma instalada, instalada, que han accedido a Google Google Play Store durante dos semanas terminado el 2 de abril de 2012. 2012
SP
' ' • '■ , „ . ;
■ ' -
■i
■
w» i fifi s mi ii/is mi i»is «i/oí »« 2C12
I %m «aioi fttns
11 At'
11 Anctmid 3.2 11 Mdrtifd 4.0.3
wis mm me
Figura 4: Evolución del porcentaje de dispositivos Android Androld según la plataforma instalada, hasta el 2 de abril de 2012.
Tras estudiar las gráficas podemos destacar el reducido número de usuarios que utilizan las versiones 1.x (1 %). Por lo tanto, puede ser buena idea utilizar la (1%). la versión 2.1 para desarrollar nuestro proyecto, dado que daríamos cobertura al 99% de los terminales. Las versiones 3.x, con un 3,3%, han tenido muy poca difusión y presentan una clara tendencia a disminuir. disminuir. Las versiones 4.x, con un 2,9%, todavía son minoritarias pero es previsible que este porcentaje vaya incrementando. incrementando.
44
Visión general y entorno de de desarrollo desarrollo
e
Enlaces de interés: interés: • Android developers: developers: Plataform Plataform Versions: Versions: Estadística Estadística de de dispositivos Android Android según según plataforma plataforma instalada, instalada, que que han han accedido accedido a Android Market. http://developer.android.com/resources/dashboard/platformhttp://developer.andro¡d.com/resoürces/dashboard/platformversions.html
• Android developers: SDK: SDK: En En el el menú menú de de lala izquierda izquierda aparecen aparecen links a las principales versiones versiones de de lala plataforma. plataforma. Si Si pulsas pulsas sobre sobre ellos encontrarás una descripción descripción exhaustiva exhaustiva de de cada cada plataforma. plataforma. http://developer.android.com/sdklindex.html http://developer.android.com/sdk/index, html
Preguntas de repaso repaso yy reflexión: reflexión: Las Las versiones versionesde deAndroid. Android.
1. 7. Creación 1.7. Creación de de un un primer primer programa programa de desarrollo desarrollo nos nos facilita facilita mucho mucho lala creación creaciónde deprogramas. programas. Esto Esto Utilizar un entorno de importante en en Android, Android, dado dado que que tendremos tendremos que que utilizar utilizar una una es especialmente importante Gracias al al plug-in plug-in Android Android que que hemos hemos instalado instaladoen en elel gran variedad de ficheros. Gracias entorno de desarrollo Eclipse, Eclipse, la la creación creación yy gestión gestión de de proyectos proyectos se se realizará realizaráde de forma muy rápida, acelerando acelerando los los ciclos ciclos de de desarrollo. desarrollo.
Poli[Med.ia]: Puli[Media |; Un Un primer primerproyecto proyecto Android. Android. 1. 7 .1. Creación del 1.7.1. del proyecto proyecto proyecto Android Android sigue sigue los los siguientes siguientespasos: pasos: Para crear un primer proyecto
Ejercicio paso aa paso: paso: Crear Crear un un primer primerproyecto. proyecto. 1.
New >> Project. Project. Si Si el el plug-in plug-in de de Android Android se se ha ha instalado instalado Selecciona File > New cuadro de de diálogo diálogo que que aparece aparece debe debe tener tener un un correctamente, el cuadro directorio llamado Android Android que que debe debe contener contener Android AndroidProject. Project.
Wisards: Java Pfoiecl Java Proiecl Project from Existing Exisling Ant An^ Buildfile Buildíile ! ···eyi~ Plug-in Project Projecl G.It General B ·· @} Android
á
· · ~ !!!~!!oject
Android T est Proiecl ' $ Gt? CVS cvs !±l ·@p Java $ ..·G'i? Plug-in Development ffi .. G.ifr EExamples xamples
3.
Rellena los detalles del del proyecto proyecto con con los los siguientes siguientes valores: valores: Project ..~: Ho J.a _!\1u r:do Project namr: ñame: HolaMundo BuildTa.rgec 5 BuildTargeC:: l~nd.l"o.id Android 1. 1.5
A.P Pl i ca t i on nñame: anie : Hola Application Hola,, l\1undo Mundo Package name . e x ampl e .holamundo ñame:: com com.example.holamundo Cr eate lictivit.v aMundo Create Activity:: Hol HolaMundo l·fin Min SDK Version Versión:: 33
Pmject Project name: na me HoJaMundo HotaMundo Contents Contents (f¡ ü? Create new Eiew projec.t project ¡n in workspace
source ® 0 Create project from existing source tecatíon ~ k Use default default location
46
Visión general y entorno de desarrollo Buitd Target Target Ñame Android11 P] Android 11 rJ W\ Androioql€ Google APIs TI Pj Androi
Build Target
Vender Android Open Sourcc Project Android Optn Source Android Open Source Projec:t Projiect Google Inc. Googlc.ln<. Android Opm Source Andrcwd Open Source Projrd Project Gocglelnc. Google Inc. Android Sourcr Project Projec:t Android OpM Open Source Google Inc. Google:ln<. Android Open Source Android Open Source PmjKt Project G<><>glelnc. Googl e Inc. Android Open Source Android Open Source Project Project Google Inc. Googl
Android Open Sour<€ Project
St•ndar
A continuación vemos una pequeña descripción descripción para para cada cada campo: campo: Project Name: Ñame. Es el nombre nombre del del proyecto. proyecto. Se Se creará creará un un directorio directorio con con elel mismo nombre que contendrá los ficheros ficheros del del proyecto. proyecto. Build Target Target. Es la versión de de la la plataforma plataforma con con la la que que será será compilada compilada lala aplicación. Normalmente ha ha de coincidir coincidir con con el el valor valor introducido introducido en en Min Min SDK Version. Versión.
Application Name: Ñame Es el nombre nombre de de la la aplicación aplicación que que aparecerá aparecerá en en elel App/ication la barra barra superior superior cuando cuando esté esté en en dispositivo Android. Tanto en la instalará en en el el menú menú de de programas. programas. ejecución, como en el icono que se instalará Package Name: Ñame. Indicamos el paquete paquete con con el el espacio espacio de de nombres nombres utilizado utilizado Debemos utilizar utilizar las las reglas reglas de de los los espacios espacios de de por nuestra aplicación. Debemos nombre en el lenguaje de programación programación Java. Java. Las Las clases clases que que creemos creemos Esto también también establece establece el el nombre nombre del del paquete paquete estarán dentro de él. Esto aplicación generada. generada. donde se almacenará la aplicación
JJ i
sssssí' Nota sobre Sobre Java: Java; El El nombre nombre del del paquete paquete debe debe ser ser único único en en todos todos los los <.....,..;::::::. paquetes instalados en el sistema; por ello, ello, es es muy muy importante importante utilizar utilizar para para tus tus aplicaciones un dominio de de estilo estilo estándar estándar en en los los paquetes. paquetes. El El espacio espacio de de nombres "com.example" está reservado para para la la documentación documentación de de ejemplos. ejemplos. Cuando desarrollas tu propia aplicación, aplicación, debes debes utilizar utilizar un un espacio espacio de de nombres nombres que sea apropiado.
47
El gran libro de Androíd Android Create Activity. Activity: Este Este es es el el nombre nombre cié de la la clase clase que que será será generada generada por por elel plug-in. Esta Esta será una una subclase subclase de de Activity Activity de de Android. Android. Una Una actividad actividades es clase que que se se puede puede ejecutar ejecutar yy modificar. modificar. Se simplemente una clase Se pueden pueden en diferentes diferentes actividades. actividades. Una Una crear las diferentes diferentes pantallas pantallas de de usuario usuario en actividad casi siempre se se utiliza utiliza como como base base para para una una aplicación. aplicación. Min SDK Versión. Version: Este Este valor valor especifica especifica el el mínimo mínimo nivel nivel del del API API que que aplicación. Si Si el el nivel nivel del del API API introducido introducido coincide coincide con con elel requiere tu aplicación. proporcionado por por uno uno de de los los targets targets disponibles, disponibles, entonces entonces se se Build Target. Target. Si Si una una aplicación aplicación requiere requiere seleccionará automáticamente automáticamente Build un nivel del del API superior superior al al nivel nivel soportado soportado por por el el dispositivo, dispositivo, entonces entonces la aplicación no será será instalada. instalada. Otros campos. campos: La casilla casilla de de verificación verificación Use Use default default location /ocation permite permite del disco disco donde donde se se crean crean yy almacenan almacenan los los ficheros ficheros de de cambiar la ruta del los proyectos. proyectos.
aunque elel Build Build Target Target Podremos ejecutar ejecutar sobre sobre la la plataforma plataforma Android Android 1.5, 1.5, aunque seleccionado sea la la plataforma plataforma 1.1. 1.1. Estos Estos no no tienen tienen que que coincidir coincidir ya ya que que una una aplicación construida construida con la la librería librería de de la la plataforma plataforma 1.1 1.1 se se ejecutará ejecutará normalmente normalmente en plataformas superiores superiores aa esta, esta, pero pero no no al al revés. revés. Deberías tener visible el el explorador explorador de de paquetes paquetes aa lala izquierda. izquierda.Abre Abre elel fichero fichero HolaMundo.java (situado en en HolaMundo Ho/aMundo >> src src >> com com.example.HolaMundo). Debe example.HolaMundo). Debe tener este aspecto: aspecto: package com.example.holamundo; com.example.holamundo; import android.app.Activity; c.ndroid. app .Act.ivit.y; import android.os.Bundle; android.os.Bundle ; public class HolaMundo extends extends Activity Activity {{
} } Comenzamos declarando el el paquete paquete con con el el espacio espacio de de nombres nombres utilizado utilizado por por nuestra aplicación. A continuación continuación indicamos indicamos los los "import" "import" con con las las clases clases que que aplicación. A su vamos a utilizar. utilizar. Esto Esto nos nos evitará evitará tener tener que que poner poner delante delante de de cada cada clase clase su espacio de nombres. nombres. Hola~,l undo extiende extiende de de activity. Activity. Una Una actividad actividad es es una una Observe que la clase HolaMundo entidad de aplicación aplicación que que se se utiliza utiliza para para representar representar una una pantalla pantalla de de nuestra nuestra usuario interactúa interactúa aplicación. Más Más adelante adelante crearemos crearemos más más actividades, actividades, pero pero elel usuario El método método onCreate oncreate()() se se llamará llamará por por elel sistema sistema con una de ellas ellas cada vez. vez. El su ejecución ejecución -es -es donde donde se se debe debe realizar realizar lala inicialización inicializaciónyy Android cuando se inicie inicie su
48
Visión general y entorno de de desarrollo desarrollo la configuración de de la la interfaz interfaz del del usuario. usuario. Una Una actividad actividad no no precisa precisa tener tener una una interfaz de usuario, pero pero la la suele suele tener. tener. Antes de este método método se se ha ha utilizado utilizado lala anotación anotación
del programa programa 1.8. Ejecución del Una vez creada esta primera primera aplicación aplicación veamos veamos dos dos alternativas alternativaspara paraejecutarla. ejecutarla.
en el el emulador emulador 1.8.1. Ejecución en la aplicación aplicación sigue sigue los los siguientes siguientes pasos: pasos: Para ejecutar la
paso: Ejecución Ejecución en en el el emulador. emulador. Ejercicio paso aa paso: 1.
Selecciona Run ). Run >> Run Run (Ctri-F11 (Ctrl-F 11).
2.
Application. El El ADT ADT de de Eclipse Eclipse creará creará automáticamente automáticamente Escoge Android Application. configuración de de ejecución ejecución para para tu tu proyecto proyecto yy lanzará lanzará elel una nueva configuración inicialización del del emulador emulador puede puede ser ser algo algo lenta, lenta, por por esta esta emulador (la inicialización no cerrar cerrar el el emulador). emulador). Una Una vez vez que que elel emulador emulador esté esté razón es mejor no algo parecido parecido aa la la siguiente siguiente figura. figura. cargado, debes ver algo
en un un terminal terminal real real 1.8.2. Ejecución en tus programas programas en en un un terminal terminal real real resulta resultaposible posibledesde desdeelelSDK. SDK. Ejecutar y depurar tus No tienes más que que usar usar un un cable cable USB USB para para conectarlo conectarlo alal PC. PC. Resulta Resulta instalado un un driver driver especial especial en en elel PC. PC. Puedes Puedesencontrar encontrar imprescindible haber instalado en la la carpeta carpeta android-sdk-windows\usb_driver android-sdk-windows\usb_driver del del SDK SDK un driver genérico en lo más más probable probable es es que que tengas tengas que que utilizar utilizar elel driver driver del del Android. Aunque lo fabricante.
i
Ejercicio paso a paso: Ejecución Ejecución en en un un terminal terminalreal. real.
49
El gran libro de Android 1.
Abre Android SDK and AVD A VD Manager yy asegúrate asegúrate que que esta está instalado instalado el el paquete USB Driver. Driver. En caso contrario contrario pulsa pulsa en en Available Available Packages Packages ee instálalo. instálalo.
tsfiJUií 7:42 AM
Android SOK and Available Packages
SDK location; C:\Progf am FtfeíXandroid-sdk-wtndowsV instafled ln:s. t \lleó Packages Packa!J~.s •i. Googl:e APis by by Google GO"ogle Inc., loe., Android Andfoid API API7, fe-.ñsion 11 %Googf e APIs 7. revisión 1i.Googl:e APis by by Google Googte: Inc.. Jnc., Android Android API AP17, fevision 11 % Google APIs 1, revisión t. Google APIs APls by by Google G:oogte Inc., Jnc., Android Android API API7. 7, revisión revision i1 % Google APls by by Google Googte Inc., lnc., Android Android API API7, 7, revisión revios:ion I1 •t4-Google % Google APIs iü üsb i'i Us:b Driver Driver package, package,. revisión re•i_s_io : _n_3l _ __ · Oescffption ·····oo'cc·····•'o'·c·"·•·'·'c·· ' .c.,., .• Description ·· 1
Posiblemente este driver genérico no no sea sea adecuado adecuado para para tu tu terminal terminal yy tengas que utilizar el el del del fabricante. fabricante. Si Si no no dispones dispones de de él, él, puedes puedes buscarlo en: en: http://developer.android.com/sdkloem-usb.html http://developer.android.oom/sdk/oem-usb.html
50
Visión general yy entorno de de desarrollo desarrollo 2.
En el terminal accede accede al al menú menú Settings Settings >> Aplications Aplications >> Development Development yy asegúrate que la la opción USB USB debugging debugging está está activada. activada.
que hay hay un un nuevo nuevo hardware hardware yy te te pedirá pedirá que que lele indiques indiques elel Se indicará que controlador. controlador.
NOTA: En Windows si indicas un un controlador controlador incorrecto incorrecto no nofuncionará. Además lala funcionará. Además conectes el el cable cable no no te te pedirá pedirá la la instalación instalación del del controlador. controlador. Para Para próxima vez que conectes desinstalar el controlador sigue sigue los los siguientes siguientespasos: pasos:
1.l. 2. 3.
Desinstala controlador. Des instala el controlador. Accede al registro del del sistema sistema (Inicio (Inicio >> Ejecutar Ejecutar >> RegEdit). RegEdit). Busca Busca lala siguiente clave y bórrala: bórrala: "vid "vid_Obb4&pid_Oc02". 0bb4&pid_()c02 ". Vuelve al paso paso 33 del ejercicio. ejercicio.
1.9. Elementos de de un un proyecto proyecto Android Android 1.9. Elementos «^Ül ür Poli[Media]: Poli[Media]: Elementos Elementos de de un un proyecto proyecto Android. Android. Un proyecto Android está está formado formado básicamente básicamente por por un un descriptor descriptor de de lala aplicación aplicación (AndroidManifest.xmí),, el código (AndroidManifest.xml) código fuente fuente yy una una serie serie de de ficheros ficheros con con recursos. recursos.Cada Cada elemento se almacena almacena en en una una carpeta carpeta específica. específica. Aprovecharemos Aprovecharemos elel proyecto proyecto un proyecto proyectoAndroid: Android: que acabamos acabamos de crear crear para para estudiar estudiar la la estructura estructura de de un src: que contiene contiene el el código código fuente fuente de de la la aplicación. aplicación. Como Como puedes puedes src. Carpeta que en un un espacio espacio de de nombres. nombres. observar los ficheros Java Java se se almacenan almacenan en
gen. Carpeta que gen: que contiene contiene el el código código generado generado de de forma forma automática automática por por elel SDK. Nunca hay SDK. hay que modificar modificar de de forma forma manual manual estos estos ficheros. ficheros. Dentro encontraremos el siguiente siguiente fichero; fichero:
51
El gran libro de Android R.java: R.java Define una clase que asocia los recursos de la aplicación con identificadores. identificadores. De esta forma los recursos podrán ser accedidos desde Java. Java .
..* ¡4i.,. HolaMundo HoJ.~,MMn9:91 (H src src "a (2J
..a m com.examp l'es.hol.amundo B convexamp
[[¡ HolaMyndo.java Hol•a Mu ndoJava (2
"a ~ gen g:en {Geneiated [Gene:rated Java Fies] Files] ~ les.holamundo * B com.examp com.examples.holamurtdo
m
t> [[¡ R.java mA Android 1.1 ^AndroidlJ @:;. a•s sets & assets _.a & ~ res a ~ drawable .11. ~ icon.png ÍIB icon.png .11. layout a ~ tayout [gj main.xml ^ ma:in,xmf á ¡;&¡} vatues .11. va l!u:es [gj string. s .xml sttings.xm! ,g: AndroidManifest.xml AndroirfMantfest,xmS ~ d efault.properti.es 3 defaultpiroperttes ¡, l>
JAR, el API de Android según la versión seleccionada. Android x.x. x.x: Código JAR, seleccionada. assets: assets: Carpeta que puede contener una serie arbitraria de ficheros o carpetas que podrán ser utilizados por la aplicación (ficheros de datos, externos, fuentes, fuentes, etc.). datos, ficheros JAR externos, etc.). A diferencia de la carpeta res, res, nunca se modifica el contenido de los ficheros de esta carpeta. res: res. Carpeta que contiene los recursos usados por la aplicación. aplicación. drawable: drawable En esta carpeta se almacenan los ficheros de imágenes y descriptores de imágenes. imágenes. layout: layout Contiene ficheros XML con vistas de la aplicación. aplicación. Las vistas nos permitirán configurar las diferentes pantallas que compondrán la interfaz de usuario de la aplicación. aplicación. Serán tratadas en el el siguiente capítulo. capítulo. menu: menú: Ficheros XML con los menús de la aplicación.
values: valúes También utilizaremos ficheros XML para indicar valores del tipo string, estilo. De esta manera podremos cambiar los string, color o estilo. valores sin necesidad de ir al código fuente. fuente. Por ejemplo, ejemplo, nos permitiría traducir una aplicación apl cación a otro idioma. idioma anim: animaciones. anim Contiene ficheros XML con descripciones de animaciones. xm/: aplicación. xml: Otros ficheros XML requeridos por la aplicación.
52
Visión general y entorno de desarrollo raw: raw Ficheros adicionales que no se encuentran en formato XML. doc: doc. Documentación asociada al proyecto. AndroidManifest.xml: Android. En En él él se se AndroidManifest.xml. Este fichero describe la aplicación Android. indican las actividades, intenciones, servicios yy proveedores proveedores de contenido de la aplicación. aplicación. También se declaran los permisos que requerirá la aplicación. aplicación. Se indica indica la versión mínima de de Android para poder ejecutarla. default.properties: generado automáticamente automáticamente por el SDK. SDK. Nunca Nunca default.properties: Fichero generado hay que modificarlo. la versión del API API yy modificarlo. Se utiliza para comprobar la otras características cuando se instala la aplicación en el terminal. terminal. NOTA: Como se acaba de ver, el uso de XML es ampliamente utilizado utilizado en en las aplicaciones Android. Android También es conocido el excesivo uso de espacio espacio que que supone /a.fi/osqfia utilizar este formato para almacenar información. if!formación. Esto parece contradecir la filosofía de Android que intenta optimizar al máximo los recursos. Para solucionar solucionar el .ficheros XML son compilados a un formato más eficiente antes antes de ser ser problema, los ficheros transforidos transferidos al terminal móvil.
1.1 O. Componentes de una una aplicación aplicación 1.10. Componentes de Existen una serie de elementos clave que resultan imprescindibles imprescindibles para para desarrollar desarrollar Android. En este apartado vamos aa realizar una una descripción descripción inicial inicial aplicaciones en Android. de algunos de los más importantes. A lo largo largo del del libro se se describirán describirán con con más más detalle las clases Java que implementan cada uno de estos componentes. componentes.
1.10.1.
Vista (View) {View)
Las vistas son los elementos que componen la interfaz interfaz de de usuario usuario de de una una aplicación. Son por ejemplo, un botón, una entrada de texto,... texto, ... Todas Todas las las vistas van a ser objetos descendientes de la clase View, yy por por tanto, tanto, pueden pueden ser ser Java. Sin embargo, embargo, lo lo habitual habitual va aa ser definir definir las las vistas vistas definidos utilizando código Java. los objetos objetos por nosotros nosotros aa utilizando un fichero XML y dejar que el sistema cree los partir de este fichero. Esta forma de trabajar es muy similar aa la la definición definición de de una una página web utilizando código HTML.
1.10.2.
Layout
Un Layout es un conjunto de vistas agrupadas de una determinada determinada forma. Vamos Vamos a disponer de diferentes tipos de Layouts para para organizar las las vistas de de forma lineal, lineal, cuadricula o indicando la posición absoluta en cuadrícula absoluta de cada vista. Los Los Layouts también View. Igual que las las vistas, los los Layouts Layouts son objetos descendientes de la clase View. habitual de de definirlos definirlos es es pueden ser definidos en código, aunque la forma habitual utilizando código XML.
53
El gran libro de Android Android
1.1 0.3. 1.10.3.
Actividad (Activity) (Activity) Actividad
Una aplicación en Android va aa estar estar formada formada por por un un conjunto conjunto de deelementos elementosbásicos básicos aplicación. En En de visualización, visualización, coloquialmente coloquialmente conocidos conocidos como como pantallas pantallas de de lala aplicación. Android cada uno uno de de estos estos elementos, elementos, oo pantallas, pantallas, se se conoce conoce como como actividad. actividad. Su Su la creación creación del del interfaz interfaz de de usuario. usuario. Una Una aplicación aplicación suele suele función principal es es la actividades para para crear crear el el interfaz interfaz de de usuario. usuario. Las Las diferentes diferentes necesitar varias actividades actividades creadas serán serán independientes independientes entre entre sí, sí, aunque aunque todas todas trabajarán trabajarán para para un un objetivo común. Toda Toda actividad actividad ha ha de de pertenecer pertenecer aa una una clase clase descendiente descendiente de de Activity.
1.10.4.
Servicio Servicio (Serv/ce) (Servíce)
Un servicio es un un proceso proceso que que se se ejecuta ejecuta "detrás", "detrás", sin sin lala necesidad necesidad de de una una demonio en en Unix Unix oo aa un un servicio servicio interacción con el usuario. usuario. Es Es algo algo parecido parecido aa un un demonio en Windows. En Android disponemos disponemos de de dos dos tipos tipos de de servicios; servicios: servicios servicios locales, locales, servicios remotos, remotos, que pueden ser utilizados utilizados por por aplicaciones aplicaciones del del mismo mismo terminal terminal yy servicios que pueden ser utilizados utilizados desde desde otros otros terminales. terminales. Los Los servicios servicios son son estudiados estudiadosen en el capítulo 8. 8.
1.1 0.5. 1.10.5.
Intención (/nfení) (lntent) Intención
Una intención representa representa la la voluntad voluntad de de realizar realizar alguna alguna acción; acción; como como realizar realizar una una llamada de teléfono, teléfono, visualizar visualizar una una página página web. web. Se Se utiliza utiliza cada cada vez vezque quequeramos: queramos: ••* •m •■
Lanzar una actividad. actividad. Lanzar un servicio. servicio. Lanzar un anuncio de de tipo tipo broadcast. broadcast. Comunicarnos con un servicio servicio
Los componentes lanzados lanzados pueden pueden ser ser internos internos oo externos externos aa nuestra nuestra aplicación. aplicación. las intenciones intenciones para para el el intercambio intercambio de de información información entre entre estos estos También utilizaremos las componentes. componentes. En muchas ocasiones una una intención intención no no será será inicializada inicializada por por lala aplicación, aplicación, sisi no no por el sistema, por por ejemplo, ejemplo, cuando cuando pedimos pedimos visualizar visualizar una una página página web. web. En En otras otras su propia propia intención. intención. Para Para ello ello ocasiones será necesario necesario que que la la aplicación aplicación inicialice inicialice su objeto de de la la clase clase Intent. lntent. se creará un objeto
1.1 0.6. 1.10.6.
Receptor de de anuncios anuncios (Broadcast (Broadcast receiver) receiver) Receptor
Un receptor de anuncios anuncios recibe recibe yy reacciona reacciona ante ante anuncios anuncios de de tipo tipo broadcast. broadcast. Existen muchos originados originados por por el el sistema, sistema, como como por por ejemplo ejemplo Batería Batería baja, baja, Aunque, las las aplicaciones aplicaciones también también puede puede lanzar lanzar un un anuncio anuncio Llamada entrante,... entrante, ... Aunque, broadcast. interfaz de de usuario, usuario, aunque aunque pueden pueden iniciar iniciar una unaactividad actividad para para broadcast. No tienen interfaz anuncio. atender a un anuncio.
54
Visión general yy entorno de desarrollo
1.10.7.
Proveedores de de contenido {Contení (Content Provider) Provider)
La compartición de información entre teléfonos móviles móviles resulta resulta un un tema tema vital. vital. Android define un mecanismo estándar estándar para que que las las aplicaciones aplicaciones puedan puedan de comprometer la la seguridad seguridad del del sistema sistema de de compartir datos sin necesidad de ficheros. mecanismo podremos acceder a datos datos de de otras otras aplicaciones, aplicaciones, ficheros. Con este mecanismo como la lista de contactos, o proporcionar proporcionar datos datos a otras otras aplicaciones. aplicaciones. Los Los Contení Content 9. Provider son estudiados en el capítulo 9.
1.11. Documentación yy ApiDemos ApiDemos 1.11. Documentación Aunque en este libro vas a aprender mucho, mucho, resultaría imposible imposible tocar tocar todos todos los los aspectos de Android a un elevado nivel nivel de de profundidad. profundidad. Por Por lo lo tanto, tanto, resulta resulta imprescindible que dispongas de fuentes de de información información para para consultar consultar los los aspectos aspectos que vayas necesitando. necesitando. En este este apartado te proponemos proponemos dos dos alternativas: alternativas: el el acceso acceso estudio de de ejemplos. ejemplos. a documentación sobre Android y el estudio
1.11.1.
Donde encontrar documentación documentación
Puedes encontrar una completa documentación documentación del SDK SDK de de Android, Android, incluyendo incluyendo de recursos en en (siempre (siempre que que referencia de las clases, conceptos clave y otro otro tipo de hayas instalado la documentación on-line): on-line):
... \ andro id - s dk -win d ows \ doc s \index. html ...\android-sdk-windows\docs\index. Esta documentación también está disponible disponible en línea línea a través través de de Internet: Internet: http://developer.android.com/ Muchos de los recursos utilizados en este este libro puedes puedes encontrarlos encontrarlos en: en: http://www.androidcurso.com/ la Web de Puedes encontrar información referente a este libro libro en en la de la la editorial: editorial: http://libroweb.alfaomega.com. mx http://libroweb.alfaomeaa.com.mx
1.11.2.
La aplicación ApiDemos
Otra opción muy interesante para aprender aprender nuevos nuevos aspectos aspectos de de programación programación consiste en estudiar ejemplos. ejemplos. Con este este propósito se se ha ha instalado instalado en en el el SDK SDK de de Android una aplicación, ApiDemos, formada por cientos cientos de de ejemplos, ejemplos, donde donde no no el API API de de Android, Android, sino sino que que solo podrás ver las funcionalidades disponibles disponibles en el además podrás estudiar su código. Para crear un proyecto con esta aplicación sigue sigue los los siguientes siguientes pasos: pasos: Selecciona File > New > Project e indica indica Android Android Project. Project. Pulsa Pulsa Next Next yy aparecerá aparecerá
un cuadro de diálogo similar similar al siguiente: siguiente:
55
El gran libro de Android Project name: ñame: Api.Demos ApiDemos Pro.jed ,. Contente C<:>ntent>
' e0 .Cre:ate proj:ed in Create new new project ir* wocrks:pace workspace
;
Cre:ate proje:ct 0 Create project from from existíog existing soorce: source
~D
t!J u~ default defauft t:ocatíon [7] Ose locatico
i.óiratiort; i
i Í BfO'yVSe .s
# Create project from existing sample ▼|
Samples: [ApiDemos Butld Target Target Ñame 0] Android 1 i Android 15 H Android 15 1*1 Android 2.0
Vender Android O¡>en Android Open Sou.rce Source Project Project Android Open Open Source Source l'r<>ject Project Android Android O¡>en Open Source Source Project Project Android Android Android O¡>en Open Source Source Project Project
Plstform 1.1 U 15 15 15 1.6 2.0 2j0
API... 0 2 i 3 4 1 5
Has de marcar la opción opción Create Create from from existing existing sample sample yy seleccionar seleccionarun un nivel nivelde de ejemplos aumenta aumenta aa medida medida que que aumentamos aumentamos elel nivel nivelde deAPI. API.AA API. El número de ejemplos selecciona uno uno de de los los ejemplos ejemplos en en Samples: Samples: en en nuestro nuestro caso caso continuación selecciona ApiDemos. Pulsa Finish Finish para para crear crear el el proyecto. proyecto. Si no ha habido ningún ningún error error ya ya puedes puedes ejecutar ejecutar ApiDemos. ApiDemos. Verás Verás como como los los diferentes ejemplos se organizan organizan por por carpetas. carpetas. En En elel nivel nivel superior superiortenemos: tenemos: 1. 1.
App: Ejemplos aa nivel nivel de de aplicación aplicación trabajando trabajando con con las las clases clases Activity, Activity,
Alarm, Dialog y Service. Service. Alarm, 2. 2.
Content; Describe Describe cómo cómo leer leer datos datos desde desde ficheros, ficheros, recursos recursos yy archivos archivos Content:
XML 3. 3.
Graphics: Gran cantidad cantidad de de ejemplos ejemplos gráficos, gráficos, tanto tantoen en2D 2Dcomo comoen en3D. 3D.
4. 4.
Media: Reproducción Reproducción de de audio audio yy vídeo vídeo con con las las clases clases MediaP/ayer MediaPlayer yy VideoView. VideoView.
5. 5.
OS: Ejemplos de de cómo cómo utilizar utilizar diferentes diferentes servicios servicios del del sistema sistema operativo, operativo, como VIBRATOR_SERVICEy VIBRA TOR_ SER VICE y SENSOR_SERVICE. SENSOR_SERVICE.
6. 6.
Text: Diferentes ejemplos ejemplos de de manipulación manipulación de de texto. texto. Nos Nos muestra, muestra, por por ejemplo, como conseguir que que parte parte de de un un texto texto se se convierta convierta en en un un link, link, que habrá automáticamente una una URL URL oo una una llamada llamada de deteléfono. teléfono.
7. 7.
Views: Views; Android utiliza utiliza como como elemento elemento básico básico de de representación representación lala clase clase View (vista). Tenemos aa nuestra nuestra disposición disposición gran gran cantidad cantidad de de descendientes de esta esta clase clase para para representar representar una una interfaz interfaz gráfica gráfica (botones, ... ). Visualiza (botones, cajas de de texto, entradas, entradas,...). Visualiza estos estos ejemplos ejemplos para para comprobar las diferentes posibilidades. posibilidades.
Una vez seleccionado un un ejemplo, ejemplo, sisi quieres quieres estudiar estudiar su su código, código, búscalo búscaloen enlala carpeta src. Para organizar organizar mejor mejor el el código código se se han han creado creado diferentes diferentesespacios espaciosde de nombre de paquetes.
56
Visión general general yy entorno entorno de de desarrollo desarrollo .. };§.\ ApiDemos íJl AptDemos ■~> ^ a\ Androíd Android 1.5 15 4 ~SJC
~ Jli com.example.android.apis ,|^ com.example.android.apís >~ ,al ^ com.example.android.apis.anjmation com.example.android.apis.animation p~ jj .example.android .apts.app Ja1 com com.example.android.apis.app p. JH .example.and roid .apts.appwi dget b JD com com.example.android.apis .appwidget .-a 0 lt1 com.example.android.apvs.cantent com.e> [/] p¡:, jjj pk.java [[¡ R^sourcesSam ResnurcesSample.java p¡, ¡|] llJ StyledText.java StyledText.java p~ lH ,fD com.example.andfold.apts.graphícs com.example.a.ndroid.a.pis.graphics m .example.and roid .apis.g raph ics.kube t>p JH Jli co com.example.android.apis.graphics.tcube l>p JP ~ com.example.androld.apis.graphics.spritetext com.example.android.apis.graphic:s.spritetext p~ Jg J;li com.exampk.android.apis.media com.example.android.apis.media p~· ,fD com .ocample.a nd roid .a pi s.os com.e> Jli com.examplc.android.apis.view gen ~ g• en IGcnerated [G~n<:r~t<:d Java Jan Ríes] Files]
~ ~ ;§. as~ets
> @7 res ¡i¡w tests p¡:, ^ :g; AndroidManifest.xml •0 And roid M an ifest.xm I ¡ default.propertíes IEJ defau:ltproperties
NOTA: Si cuando ejecutas ejecutas la la aplicación aplicación no no te te deja dejayy te te indica indicael elsiguiente siguienteerror: error: [2821-12-07 13:42:04 - ApiDesnos] Installing ApiOecos.apk... [2811-12-07 [2~11 - 12 - 67 23:42:14 13~42~ 14 -- ¿piPefaos] ,t..pit:l(:t."«>~ l Re-in&tallation ~~- ins.t~lhtit..:m faiied faihá due du~ lo tv sifferent -~if1€1'c?:nt· appiicatiofi ~pdic:at~o~~ signaturas. si.g'l.:.tur•(:s, [2011 • 22. -0? 13:42.;2.4 T.Wt»; Thir» PftU.·U·-(:>1 H c41.;1.4 ■.. 4piD««»os1 Apit~!<] You You «ust. ~J!'-it p«rfor« r..t:rf<.":il'"f.'l a~ frsll unjnst.all unln!'-it~ll of of thí? tht:- applicatixjr. ar;-¡lir.atifl.r., WAkfí. WARfH.tXi; T~hwill \Villr« 1"'~ [2811-12-8? p.9ll uninstali t.l'lim.t<.\U ct^.exasspiíf,androíd.apis' c
.11
13 ~ 42~14
c.~J:u:d~ci ·:
Es porque ya existe existe una una aplicación aplicación con con el el mismo mismo nombre nombre de de paquete paquete (com. example. andró id. apis). Además, (com.examp/e.android.apis). Además, ha ha detectado detectado que que la la aplicación aplicación ha hasido sidofirmada firmada con un certificado digital diferente diferente al al que que estás estás utilizando. utilizando. Se soluciona desinstalando antes antes la la aplicación. aplicación. Tienes Tienes dos dos opciones: opciones: •
Como lo hacemos hacemos con con nuestro nuestro teléfono: teléfono: Ajustes/Aplicaciones/Administar Ajustes/Aplicaciones/Administar Aplicaciones/ApiDemos/Des instalar. Aplicaciones/ApiDemos/Desinstalar.
• Desde la línea de comando: Adh adb uninstall uninstal l com.example.android.apis. com. example. android. apis. Este problema aparece cuando se se ejecuta ejecuta ApiDemos ApiDemos en en un un dispositivo dispositivo donde dondeya yaestá está instalado. También si instalado. si hemos hemos ejecutado ejecutado una una aplicación aplicación en en nuestro nuestro teléfono teléfono yy El nuevo nuevo entorno entorno utiliza utiliza un un certificado certificado digital digital cambiamos de entorno de desarrollo. desarrollo. El diferente por lo que no permite permite remplazaría. remplazar/o.
1.12. 1.12. Depurar Depurar 1.12.1.
Depurar Depurar con con Eclipse Eclipse
El plug-in de de Android Android para para Eclipse Eclipse tiene tiene una una excelente excelente integración integración con con elel depurador de de Eclipse. Eclipse. Introduce Introduce un un error error en en tu tu código código modificando modificando elel código códigofuente fuente de HolaMundo Holat,lundo para que tenga tenga este este aspecto: aspecto:
57
El gran libro de Android publ ic class HolaMundo EolaMundo extends exte n ds Activ ity {{ public Activity /** Called when the activity is first created. */ wherl ac=tivity
@0verride
@Ov~:::rr.id~:::
publ í c void vo i d onCreate(Bundle savedlnstanceState) savedinstanceState) public ssuper.onCreate(savedlnstanceState); u per .onCreate(savedlns t anceState); Object Ob j ect oo == nuil; n ull; o. toStdng í); () ; o.toString setContentView(R.layout setContentView (R . layout.. main); rnain) ;
{
} 1 Este cambio introduce un Nui/PointerException NullPointerException en tu código. código. Si ahora ejecutas tu aplicación, te aparecerá esto:
1
1
ii 11 Forcé dose emulador. Pulsa "Force "Forcé clase" cióse" para finalizar la aplicación y cerrar la ventana del emulador. Para averiguar más sobre el error, inserta unn punto de ruptura (breakpoint) en el código fuente en la línea Object o = null; (el breakpoint se introduce haciendo = nuil; doble clic en la barra de la izquierda). izquierda). Entonces selecciona Run 1 / Debug History 1/ Ho/aMundo debug. Tu aplicación se reiniciará en el emulador, emulador, HolaMundo para entrar en modo debug. pero esta vez quedará suspendida cuando alcance el punto de ruptura que se ha introducido. introducido. Entonces puedes recorrer el código en modo Debug, Debug, igual que se haría en cualquier otro entorno de programación. programación.
1.12.2.
Depurar con mensajes Log
La clase Log proporciona un mecanismo para depurar nuestros programas o para verificar el funcionamiento de los objetos que estamos utilizando. utilizando. Disponemos de continuación: varios tipos de mensajes tal y como se muestra a continuación: Errors. Errors. Warnings. Warnings. Log. i i o: { l: lnformation. Information. Log . d () : Debugging. Log.dí): Debugging. Log v (): () : Verbose. Verbose. Log.. v Log. (l : Log.ee ():
Log.. w w {); Log () :
Ejercicio paso a paso: Depurar con mensajes Log. Log.
58
Visión general yy entorno de de desarrollo desarrollo 1.
clase HoiaMundo Holal'lundo introduciendo introduciendo lala línea línea que que aparece aparece en en Modifica la clase negrita: negrita: public clasa class HolaMundo Holafvlundo extends extends Activity Activity {{ / ** Called when the activity activity is is first first created. c reated. */ *Í /**
SOverride public void onCreate(Bundle onCreate \Bundle savedlnstanceState) savedinstanceState ) { Log.d("HolaMundo","Entramos Log . d (" HolaMundo" , "Entramos en en onCreate"); onCreate"} ; super .onCreate(savedinstanceState); super.onCreate(savedlnstanceState); Object o == nuil; null ; o. toStr.i.ng {) ; o.toStringO setContentView(R.layout.mai n) ; setContentView(R.layout. rnain);
2.
} } Ejecuta la la aplicación. aplicación. Aparecerá Aparecerá un un error. error. de Log Log desde desde Eclipse Eclipse accede accede al al menú menú Window Window/1Show Show Para ver el fichero de View 1 ... /1 Android Android /1 LogCat. LogCat. / Others Others...
LogCat puede utilizarse utilizarse para para detectar detectar errores errores oo problemas problemas en en elel código. código.
Por ejemplo, si no tenemos muy muy claro claro qué qué parte parte del del código código causó causó elel error error del ejemplo anterior, anterior, podemos podemos buscar buscar el el último último error error yy ver ver cuál cuál fue fue lala En el el siguiente siguiente cuadro cuadro se se llamada de nuestro nuestro código código que que lo lo generó. generó. En muestra como el error error lo lo ha ha ocasionado ocasionado "holaAndroid.java:10". "holaAndroid.java:10".
59
CAPÍTULO 2. CAPÍTULO 2.
Diseño de la la interfaz interfaz de de usuario: usuario: Diseño de Vistas y Layouts Layouts Vistas y
El diseño de de la interfaz interfaz de de usuario usuario cobra cobra cada cada día día más más importancia importancia en en elel desarrollo desarrollo de una aplicación. aplicación. La La calidad calidad de de la la interfaz interfaz de de usuario usuario puede puede ser ser uno uno de de los los factores que conduzca conduzca el el proyecto proyecto al al éxito éxito oo al al fracaso. fracaso. Si has realizado alguna alguna aplicación aplicación utilizando utilizando otras otras plataformas, plataformas, advertirás advertirás que que el diseño de la interfaz interfaz de de usuario usuario en en Android Android sigue sigue una una filosofía filosofía muy muy diferente. diferente.En En Android la interfaz de de usuario usuario no no se se diseña diseña en en código, código, sino sino utilizando utilizando un un lenguaje lenguaje HTML. de marcado similar al HTML. A lo largo de este capítulo capítulo mostraremos mostraremos una una serie serie de de ejemplos ejemplos que que te te permitirán permitirán entender el diseño de de la la interfaz interfaz de de usuario usuario en en Android. Android. Aunque Aunque no no será será lala forma forma habitual de trabajar, trabajar, comenzaremos comenzaremos creando creando el el interfaz interfaz de de usuario usuario mediante mediantecódigo. código. De esta forma comprobaremos comprobaremos como como cada cada uno uno de de los los elementos elementos del del interfaz interfaz de de usuario (vistas) realmente realmente son son objetos objetos Java. Java. Continuaremos Continuaremos mostrando mostrando cómo cómo se se de usuario usuario utilizando utilizando código código XML. XML. Pasaremos Pasaremos luego luego aa ver ver las las define el interfaz de herramientas de diseño diseño integradas integradas en en Eclipse. Eclipse. Se Se describirá describirá elel uso uso de de Layouts Layoutsque que nos permitirá una correcta correcta organización organización de de las las vistas vistas yy como como elel uso uso de de recursos recursos alternativos nos nos permitirá permitirá adaptar adaptar nuestra nuestra interfaz interfaz aa diferentes diferentes circunstancias circunstanciasyytipos tipos este capítulo capítulo también también comenzaremos comenzaremos creando creando lala aplicación aplicación de de de dispositivos. dispositivos. En este ejemplo desarrollada desarrollada aa lo lo largo largo del del curso, curso, Asteroides. Asteroides. Crearemos Crearemos lala actividad actividad principal, donde simplemente simplemente mostraremos mostraremos cuatro cuatro botones, botones, uno uno de de los los cuales cuales arrancará una segunda segunda actividad actividad para para mostrar mostrar una una caja caja Acerca Acerca de... de... AA continuación, continuación, estilos yy temas temas yy los los aplicaremos aplicaremos aa estas estas actividades. actividades. Para Para aprenderemos aa crear crear estilos terminar el capítulo, capítulo, propondremos propondremos varias varias prácticas prácticas para para aprender aprender aa utilizar utilizar diferentes tipos de vistas vistas yy Layouts. Layouts.
~Objetivos: Objetivos:
•
se realiza realiza el el diseño diseño del del interfaz interfaz de de usuario usuario en en una una Describir cómo se aplicación Android. Android.
61
El gran libro de Android •
mostrar sus sus atributos atributos más más importantes. importantes. Aprender a trabajar con vistas yy mostrar
•
de Layouts que que nos nos permitirán permitirán organizar organizar las las vistas. vistas. Enumerar los tipos de
•
recursos alternativos. alternativos. Mostrar cómo se utilizan los recursos
•
Aprenderemos a crear estilos estilos yy temas temas para para personalizar personalizar nuestras nuestras aplicaciones.
•
las vistas vistas desde desde el el código código Java. Java. Mostrar cómo interactuar con las
•
TabLayout. Describir el uso de Tablayout.
2.1. Creación Creación de de una una interfaz interfaz de de usuario usuario por por código código 2.1. Veamos un primer ejemplo de de cómo cómo crear crear una una interfaz interfaz de de usuario usuario utilizando utilizando exclusivamente código. Esta Esta no no es es la la forma forma recomendable recomendable de de trabajar trabajarcon conAndroid, Android, sin embargo resulta interesante para para discutir discutir algunos algunos conceptos. conceptos.
Ejercicio paso a paso: paso. Creación Creación del del interfaz interfaz de de usuario usuario por por código. código. 1.
Abre el proyecto creado en el el capítulo capítulo anterior anterioryy visualiza visualiza Ho/aMundo.java. HolaMundo.java.
.c;;;""'r""'~ Nota sobre Java: Para poder poder utilizar utilizar el el objeto objeto TexView TexView has has de de importar importar un un nuevo paquete, para ello añade id. widge t . añade al al principio principio import import andro android. widget. TextView;. Otra alternativa es es pulsar pulsar Ctrl-Shift-0, Ctrl-Shift-O, para para que que se se añadan añadan automáticamente los paquetes que faltan. faltan
62
Diseño de la interfaz intertaz de usuario: Vistas y y Layouts La interfaz de usuario de Android está basada en una jerarquía de objetos descendientes de la clase view (vista). (vista). Una vista es un objeto que se puede dibujar y se utiliza como un elemento en el diseño de la interfaz de usuario (un botón, una imagen, una etiqueta de texto como el utilizado en el ejemplo, ... ). Cada uno de estos elementos se define como una subclase de ejemplo,...). la clase vtew; view; la subclase para representar un texto es Textview.
Textview. El ejemplo comienza creando un objeto de la clase Textv t ew. El constructor de la clase acepta como parámetro una instancia de la clase context context (contexto). (contexto). Un contexto es un manejador del sistema que proporciona servicios como la resolución de recursos, obtención de acceso a bases de datos o preferencias. preferencias. La clase Activity es una subclase de context, Context, y como la clase HelloAndroid es una subclase de Activity, también es tipo context. Por ello, puedes pasar this (el objeto actual de la clase HolaMundo} HolaMundo) como contexto del TextView. Textview. Después se define el contenido del texto que se visualizará en el TextView Textview mediante setText (CharSequence). (charsequence). Finalmente, mediante setContentView setcontentview () {) se indica la vista utilizada por la actividad.
3.
Ejecuta el proyecto para verificar que funciona.
2.2. 2.2. Creación Creación de de una una inteñaz interfaz de de usuario usuario usando usando XML XML En el ejemplo anterior hemos creado la interfaz de usuario directamente en el código. código. A veces puede ser muy complicado programar interfaces de usuario, ya que pequeños cambios en el diseño pueden corresponder a complicadas modificaciones en el código. código. Un principio importante en el diseño de software es que conviene separar todo lo posible el diseño, diseño, los datos y la lógica de la aplicación. aplicación. Android proporciona una alternativa para el diseño de interfaces de usuario: los ficheros de diseño basados en XML. Veamos uno de estos ficheros. Para ello res/layout/main.xml de nuestro proyecto. Se muestra a accede al fichero res/layoutlmain.xml continuación. continuación. Este layout o fichero de diseño proporciona un resultado similar al del ejemplo de diseño por código anterior:
android: llayout_width= a y o ut _ width= ""fiH_parent" Lill_pa.rent; " android: llayout_height= a yout_ h e ight = •" fi f.i 1.2_parent .1..1_ parent: ""> >
El gran libro de Android Resulta sencillo interpretar su su significado. significado. Se Se introduce introduce un un elemento elemento de de tipo tipo LinearLayout.; LinearLayout; como se estudiará estudiará más más adelante adelante su su función función es es contener contener otros otros elementos de tipo view. Este LinearLayout LinearLayout tiene tiene cuatro cuatro atributos. atributos. El El primero, primero, xmlns: xmins: android, es una declaración declaración de de un un espacio espacio de de nombres nombres de de XML XML que que
utilizaremos en Android (este (este parámetro parámetro solo solo es es necesario necesario especificarlo especificarlo en en elel atributo indica indica que que los los elementos elementos se se van van aa distribuir distribuir primer elemento). El siguiente atributo siguientes permiten permiten definir definir el el ancho ancho yy alto alto de de lala vista. vista. En En de forma vertical. Los dos siguientes el ejemplo se ocupará todo el el espacio espacio disponible. disponible. Dentro del LinearLayout solo tenemos tenemos un un elemento elemento de de tipo tipo TextView. Textview. Este Este dispone de tres atributos. Los Los dos dos primeros primeros definen definen el el ancho ancho yy alto. alto. El El último último indica indica el texto a mostrar. No se ha ha indicado indicado un un texto texto en en concreto concreto sisi no no una una referencia, referencia, "@string/heiio". Esta referencia referencia ha ha de de estar estar definida definida en en elel fichero fichero "@string/hello". reslvalueslstrings.xml. resA/alues/strings.xml. Si abres abres este este fichero, fichero, tienes tienes el el siguiente siguiente contenido: contenido:
cstring ">Hello World, laMundo! c/string> Hello World, Ho HolaMundo!Ho l a , Mundo< ist:r.~j_ng> Hola, Mundo 1
11
11
11
11
Esta es la práctica recomendada en en Android Android para para la la inserción inserción de de textos textos en en tu tu aplicación, dado que facilita su su localización localización aa la la hora hora de de realizar realizar lala traducción traducción aa otros idiomas. idiomas. Es decir, utilizaremos utilizaremos los los ficheros ficheros layout layout para para introducir introducir el el diseño diseñode de los interfaces y el fichero strings strings para para introducir introducir los los textos textos utilizados utilizados en en los los distintos distintos idiomas. idiomas.
Ejercicio paso a paso: Creación Creación del del interfaz interfaz de de usuario usuario con con W**
X ML. XML
1.
Para utilizar el diseño diseño en en XML XML regresa regresa al al fichero fichero HolaMundo.java HolaMundo.java yy antes (elimina (elimina las las tres tres últimas últimas líneas líneas yy deshaz los cambios que hicimos antes quita el comentario).
2.
Ejecuta la aplicación yy verifica verifica el el resultado. resultado. Ha Ha de de ser ser muy muy similar similar alal anterior. anterior,
3.
Modifica algún valor del fichero fichero res/va/ueslstrings.xml. res/vatues/strings.xmi
4.
Vuelve a ejecutar la aplicación aplicación yy visualiza visualiza el el resultado. resultado. Analicemos ahora la línea en la que que acabas acabas de de quitar quitar el el comentario: comentario; setContentView(R . layout . main); setContentViewÍR.layout.main);
Aquí, main corresponde a Aquí, R.layout. r.layout.main a un un objeto objeto v.iew view que que será será creado creado en en tiempo tiempo de ejecución a partir del recurso recurso main.xml. main.xml. Trabajar Trabajar de de esta esta forma, forma, en en comparación comparación no quita quita velocidad velocidad yy requiere requiere menos menos espacio. espacio. El El p/ugplugcon el diseño basado en código, no in In de Eclipse crea automáticamente esta esta referencia referencia en en la la clase clase Rr del del proyecto proyecto aa partir partir de todos los elementos de la la carpeta carpeta res. res. Abre Abre el el fichero fichero llamado llamado gen/R.java. gen/R.java. Este Este fichero será similar al que se se muestra muestra aa continuación: continuación:
64
Diseño de la interfaz de de usuario: usuario; Vistas Vistas yy Layouts Layouts com.example.holamundo; package corn. exampl e. holamundo; public final final class class RR {{ public static final final class class attr attr {{
}} public static final final class class drawable drawable { public static final final int int i.con=Ox7f020000 icor¡=0x7f020000;;
} final class class layou layout public static final t {{ public static final final int int main=Ox7f030000; ínain-0x7f030000; } public static final final class class string string {{ public static final final int int app_narne=Ox7f040001; app_name=0x7f040001; final int int he1.1o=Ox7f040000; i-ieilo=0x7f040000; public static final
fichero se se genera genera automáticamente. automáticamente. Nunca Nunca debes debes editarlo editarlo de de forma forma NOTA: Este fichero manual. claro que que las las referencias referencias de de lala clase clase Rr son son meros merosnúmeros númerosque que Has de tener claro informan al gestor de de recursos, recursos, que que datos datos ha ha de de cargar. cargar. Por Porlolotanto tantono nose setrata tratade de verdaderos objetos, objetos, estos estos serán serán creados creados en en tiempo tiempo de de ejecución ejecuciónsolo solocuando cuandosea sea necesario usarlos.
Ejercicio paso aa paso: paso: El E/ fichero fichero R.java. R.java. 1.
llamado gen/R.java gen/R.java de de tu tu aplicación. aplicación. Abre el fichero llamado
2.
fichero mostrado mostrado previamente. previamente. ¿Qué ¿Qué diferencias diferencias Compáralo con el fichero encuentras?
3.
HolaMundo.java yy reemplaza reemplaza R.layout r . layout.. main mainpor porelelvalor valor Abre el fichero Ho/aMundo.java numérico al que corresponde corresponde en en R.java. R.java.
4.
nuevo el el proyecto. proyecto. ¿Funciona? ¿Funciona? ¿Crees ¿Crees que que sería sería adecuado adecuado Ejecuta de nuevo numérico? dejar este valor numérico?
5.
puede cambiar cambiar en en un un futuro. futuro. Por Por lolo tanto, tanto, para para evitar evitar Este valor puede vuelve aa remplazarlo remplazado por por R. r.layout layout. .main. main . problemas futuros vuelve
.-...
"1Téjs'J. 7 -'".-
11,1 Poii[Media]: Un primer proyecto Android.
Poli[Media]: Un primer proyecto Android.
Preguntas de repaso repaso yy reflexión: reflexión; Diseño Diseño del delinterfaz interfazde de usuario yy el fichero fichero R.java. R.java.
65
El gran libro de Android visual de de las las vistas vistas 2.2.1. Edición visual editar los los layouts layouts oo ficheros ficheros de de diseño diseño en en XML. XML. En En elel Veamos ahora como editar paquetes abre abre el el fichero fichero resl/ayoutlmain.xml. res/layout/main.xml. Verás Verásque queen enlalaparte parte explorador de paquetes central aparecen aparecen dos dos lengüetas: lengüetas: Layout Layoutyy main.xml. main.xml. ElElplugpluginferior de la ventana central permite dos dos tipos tipos de de diseño: diseño: editar editar directamente directamente elel código códigoXML XML in de Android te permite main.xml) oo realizar realizar este este diseño diseño de de forma forma visual visual (lengüeta (lengüeta Grafícal Gráfica! (lengüeta maín.xml) Layout). Layout). Veamos cómo se se realizaría realizaría el el diseño diseño visual: visual: ¿ mAir> x/rt < j lócate ▼ i j Androjc Editing corftg: cefauft i.lm WV5A tNexus ▼ Portfí » iNoD> ▼ ÜayU ▼jTheme i : Palette U? fwm Wtdgeli
se visualiza visualiza una una lista lista con con todos todos los los elementos elementosde delalavista. vista. En el marco derecho se ha incluido incluido un un listado listado con con las las vistas vistas disponibles. disponibles. En En este este En el anexo 8B se ha momento solo hay dos: un un r,inearr..ayout LinearLayout que que contiene contiene un un Text.View. Textview. En Enelelmarco marco central aparece una una representación representación de de cómo cómo se se verá verá elel resultado. resultado. En En lala parte parte varios controles controles para para representar representar esta esta vista vista en en diferentes diferentes superior aparecen varios Cuando diseñamos diseñamos una una vista vista en en Android, Android. hay hay que que tener tener en en configuraciones. Cuando cuenta que desconocemos desconocemos el el dispositivo dispositivo final final donde donde será será visualizada visualizada yy lala específica elegida elegida por por el el usuario. usuario. Por Por esta esta razón razón,, resulta resultaimportante importante configuración específica que verifiques que la la vista vista se se ve ve de de forma forma adecuada adecuada en en cualquier cualquier configuración. configuración. Podemos seleccionar la la configuración configuración regional regional (loca/e}, (lócale), lala versión versión de de Android Android utilizada, el tamaño en en pulgadas pulgadas yy lala resolución resolución del del dispositivo, dispositivo, orientación orientación horizontal (lanscape) (lanscape) oo vertical vertical (portraít}, (portralt), configuración configuración de de utilización utilización (escritorio (escritoriooo automóvil), configuración configuración según según la la hora hora del del día día (diurna (diurna oonocturna) nocturna)yycómo cómose severá verá automóvil}, aplicar un un tema. tema. nuestra vista tras aplicar Para editar un elemento elemento selecciónalo selecciónalo en en el el marco marco de de laladerecha derechayypincha pinchasobre sobre él en la ventana de de previsualización. previsualización. Al Al seleccionarlo seleccionarlo puedes puedes modificar modificaralguna algunade de
66
Diseño de la interfaz de usuario: Vistas y Layouts sus propiedades en el marco que aparece en la parte inferior. inferior. Si este marco no está visible, visible, pulsa con el botón derecho sobre el elemento en el marco de la derecha y seleccionas Properties, aparecerá el marco en la parte inferior con la lista de propiedades. Para activar esta vista accede al menú Windows W/ndows > Show View > Others ... .. > General > Properties. Dele un vistazo a las propiedades disponibles para TextView TextVIew y modifica alguna de ellas. En muchos casos te aparecerá un desplegable con las opciones disponibles. El marco de la izquierda te permite insertar de forma rápida nuevos elementos a la vista. Puedes arrastrar cualquier elemento a la ventana de previsualización o al marco Outline. Outline.
Ejercicio paso a paso: Creación visual de Vistas. 1.
Crea un nuevo proyecto con nombre PrimerasVistas. PrimerasVistas. Selecciona la versión 1.6 e introduce org. example exampie.. primerasvistas en Package name. ñame.
2.
Abre el fichero res/layoutlmain.xml. res/layout/main.xml.
3.
Desde la paleta de la izquierda arrastra los siguientes elementos: TroggleButton, CheckBox, ProgressBar y RatingBar.
4.
Selecciona la primera vista que estaba ya creada (Textview) y pulsa el botón para eliminarla. eliminarla.
5.
Set Horizontal Orientation) para conseguir Pulsa el primer botón lll.l QH ((Set que el LinerLayout r..inerr..ayout donde están las diferentes vistas tenga una orientación horizontal. Comprobarás que no caben todos los elementos. elementos.
6.
Pulsa el siguiente botón S 623 (Set Vertical Orientation) para volver a una orientación vertical.
7.
Selecciona la vista TroggleButton. Pulsa el botón siguiente al que acabamos de utilizar (Trodgle Fi/1 FUI Width). Wldth). Conseguirás que el ancho del botón se ajuste al ancho de su contenedor.
8.
Pulsa el botón siguiente (Trodgle Fi/1 FUI Height). Conseguirás que el alto del botón se ajuste al alto de su contenedor. El problema es que el resto de elementos dejan de verse. verse. Vuelve a pulsar este botón para regresar a la configuración anterior (también puedes pulsar Ctrf-Z). Ctrl-Z).
9.
Selecciona la vista CheckBox. CheckBox. Pulsa el botón siguiente al que acabamos ...). Conseguirás que el ancho del botón se de utilizar (Change Margins Margins...). ajuste al ancho de su contenedor. En la entrada Al/ All introduce "20px".
10. 10. Pulsa el botón siguiente (Change Gravity) Gravlty) y selecciona Center Horizontal.
11. Observa como hay un espacio sin usar en la parte inferior del Layout.
El gran libro de Android Es equivalente a poner Layout Weights =1 para todas las vistas de este Layout. Esta propiedad será modificada en el siguiente punto. Layout. 12. Pulsa el botón siguiente (Change (Changa Layout Weights) e introduce el valor 2. 2. Selecciona la vista TroggieButton Tros;gleButton y usando este mismo botón, introduce el valor 0.5. 0.5. Selecciona la vista ProgressBar e introduce el valor 4. 4. Como puedes observar estos pesos permiten ajustar la altura de las vistas.
ÍX 'ii 13. Utiliza los siguientes botones ®,. ~ ~
1
Et
~ para ajustar el zoom. zoom.
14. Utiliza los botones de la barra superior para observar cómo se representará el Layout en diferentes circunstancias: circunstancias:
jportfait ▼ ¡No Dock *
[sJin VWGA(NexusOm
Theme
El primer desplegable permite escoger entre diferentes tamaños de resolución. El siguiente visualiza en vista vertical (Portrait) u pantalla 1/ resolución. horizontal (Landscape). Los dos siguientes permiten definir diferentes modos de visualización (Card Dock significa que esta activado el modo automóvil y Nigth time el modo noche). noche). Estos modos están disponibles a partir de (a la versión 2.2. 2.2. El último desplegable permite ver cómo quedaría el Layout tras aplicar un tema. tema. 15. Si no está visible la vista de Eclipse Propiedades, actívala utilizando el menú Ventana/Mostrar Vista/Otras..../General/Propiedades. .!General/Propiedades. 16. Selecciona la vista checkBox CheckBox y observa las diferentes propiedades que podemos definir. definir. Algunas ya han sido definidas por medio de la barra de botones. botones. En concreto, y siguiendo el mismo orden que en los botones, hemos modificado: content, Layout height = = modificado: Layout width= wrap contení, wrap_content, wrap_content, Layout margin = 20px, Layout gravity = center_horizontal y Layout weights =2. -2. 17. Busca la propiedad Text ye el valor "CheckBox" por "Guardar Texf y sustit sustituye size por "9pt". automáticamente" y Text Texf s/ze 18. El resultado final obtenido se muestra a continuación: continuación:
OK:Ouar
|" ¥
4^ ■
Layouts Vistas yyLayouts Diseño de la interfaz usuario: Vistas de usuario: interfaz de Pulsa "main.xmf'.Pulsa nombre"main.xmt'. con nombre inferior con parte inferior la parte de la lengüeta de 19. Pulsa sobre la lengüeta XML. código XML. adecuadamente elel código formatee adecuadamente que formatee para que Shift-Ctr/-F para las teclas Shiñ-Ctri-F continuación. muestra aa continuación. Este código se muestra encoding= Utf-8 "?> v e rsion=""J1.0 .ica.l"> t l'f~.r." ientation= r android:o androi.d:layout._weight.=" android:layout_weight="0.5"/> android:text.Size android: textSize== ".9pt"/> weight=""4"/> android:layou t _weight= android:layout (9+ i d./rat in f-¡Barl "0.5 "/'> t _weight android:layou android: layout_ weight== "0.5 >
Ir
ll
11
11
11
resultado. el resultado. ver el para ver proyecto para 20. Ejecuta el proyecto 20.
texto. de texto. entrada de de entrada Vistas de paso: Vistas Ejercicio paso aa paso: 1. 1.
entrada tipo entrada de tipo Añade en la parte vista de una vista anterior una Layout anterior del Layout superior del parte superior de una de esta una de esta Debajo de Plain) . Debajo (Text Plain). normal (Text tipo normal de tipo EditText , de de texto EditText, palabra tipo palabra de tipo una de de una seguida de Name) seguida (Person Ñame) tipo nombre yy apellido (Person texto. detexto. entradas de de entradas tipos de otros tipos con otros así con Continua así secreta (Password). Continua
2.
Ejecuta la aplicación. aplicación.
3.
tipo un tipo mostrará un se mostrará entrada se una entrada de una texto de el texto introducir el al introducir Observa, como al diferente. de teclado diferente.
69
El gran libro de Android
Recursos adicionales: adicionales; Tipos Tipos de de vista vista yy sus sus atributos. atributos. Consulta el Anexo 8B para para conocer conocer una una lista lista con con todos todos los los descendientes descendientesde delala clase Vi ew y sus atributos. view atributos.
Preguntas de repaso repaso yy reflexión: reflexión: Las Las vistas vistas yysus susatributos. atributos.
2.3. 2.3. Layouts Layouts Si queremos combinar varios varios elementos elementos de de tipo tipo vista vista tendremos tendremos que que utilizar utilizarun un Un Layout Layout es es un un contenedor contenedor de de una una oo más másvistas vistasyycontrola controla objeto de tipo Layout. Un su comportamiento y posición. posición. Hay Hay que que destacar destacar que que un un Layout Layoutpuede puedecontener conteneraa otro Layout y que es es un un descendiente descendiente de de lala clase clase View. View. La La siguiente siguientelista listadescribe describe los Layout más utilizados utilizados en en Android: Android:
LinearLayout LinearLayout. Dispone Dispone los los elementos elementos en en una una fila fila oo en en una unacolumna. columna. Tab/eLayout TableLayout: Distribuye Distribuye los los elementos elementos de de forma forma tabular. tabular. RelativeLayout: RelativeLayout. Dispone Dispone los los elementos elementos en en relación relación aa otro otroooalalpadre. padre. AbsoluteLayout: Posiciona Posiciona los los elementos elementos de de forma forma absoluta. absoluta. FrameLayout FrameLayout. Permite Permite el el cambio cambio dinámico dinámico de de los los elementos elementosque quecontiene. contiene.
vale más más que que mil mil palabras, palabras, pasemos pasemosaa mostrar mostrarcada cadauno uno Dado que un ejemplo vale en acción. acción. de estos layouts en LinearLayout es el layout layout más más utilizado utilizado en en la la práctica. práctica. Distribuye Distribuyelos loselementos elementos uno detrás de otro, bien bien de de forma forma horizontal horizontal oo verticaL vertical.
android : layout___.width= " wrap_conten t • android: layout_ height= "WT d P .... conten t " /> android:layout_height="wrap_content"/> <:Bu t ton
android:layout_ wi dth=" wrap .. content'" android:layout_width="wrap_content" android: layou t_height= '' !Alra...o.....content. aandroid: nd.r oid: ttext= ext= ""Un Un texto era ""/> l> texto cu.a.l.c¡u.i cualquiera 11
70
Br
Diseño de la interfaz interfaz de de usuario: usuario: Vistas Vistas yy Layouts Layouts TableLayout distribuye los los elementos elementos de de forma forma tabular. tabular. Se Se utiliza utiliza lala etiqueta etiqueta TableRow cada vez que que queremos queremos insertar insertar una una nueva nueva línea. línea. "> android; layout_width= ¡,
android:t.ext:;:;" Un texto ttxto cualquiera"/> cualq-uiera " /> android:text="Un
RelativeLayout permite Re/ativeLayout permite comenzar comenzar aa situar situar los los elementos elementos en en cualquiera cualquiera de de los los cuatro lados del contenedor contenedor ee irir añadiendo añadiendo nuevos nuevos elementos elementos pegados pegadosaaestos. estos.
xmlns: android= "http://scheinas. rr h t tp : l/schemas . .. .. xmlns;android= android: layout._heiqht= " fill_oarent android:layout ,_height= "fiil _parent"" android:layout ,_width= "íi android: layout_width= " f i 1l ll_„parent ....Pc1Tent "> ">
android:layout alignParentTop="true"/>
Un checkBox"/>
I
aandroid:id="@+ n dro i d: id= " (iJ.+ íd/Button0. 1' id/ButtcnOl" andr oid: layo ut _width="wrap_content" width= "tvrap_ conc:ent" android:layout andr·oid: layout)leight= " :vrap_cont:ent android:layout _height="wrap_cont ent"" andro id:text="" Un botón" .i:Jot6n/l android:text=
El gran libro de Android andro.id: layout_he.ight.= " <,;r.ap .. content" android:Iayout_height-"wrap_content" android:layout alignParentBottom»"true" and roid : layou t .....alignParentBot tom= "true" android: text = " Un t:f}Xto i era " l> android:text»"Un texto cua.!.qu cualguiera"/> RelativeLayout>
AbsoluteLayout permite indicar indicar las las coordenadas coordenadas (x,y) (x,y) donde donde quE>remos queremosque quese se visualice cada elemento.