AMARO SORIANO,JOSE ENRIQUE
1. INTRODUCCIÓN.................................................................................................................11
2. ANIMACIONES INTERPOLADAS ...................................................................................14
2.1. Traslaciones .................................................................................................... 14
2.2. Repetición de animaciones ............................................................................ 18
2.3. Rotaciones ...................................................................................................... 21
2.4. Dilataciones y contracciones ......................................................................... 23
2.5. Apariciones y desapariciones ........................................................................ 24
2.6. Series de animaciones ................................................................................... 26
2.7. Animaciones con Java ................................................................................... 29
2.8. AnimationListener ........................................................................................... 32
2.9. Animación de un layout .................................................................................. 34
2.10. Animación de un layout en Java.................................................................. 37
2.11. LayoutAnimationListener.............................................................................. 38
3. ANIMACIÓN DE FOTOGRAMAS ....................................................................................41
3.1. Animación usando recursos........................................................................... 41
3.2. Animación de fotogramas en Java: AnimationDrawable ............................. 45
3.3. Ajuste de la relación de aspecto.................................................................... 46
4. PROCESOS EN BACKGROUND.......................................................................................52
4.1. Uso de Timer y RunOnUiThread ................................................................... 52
4.2. Modificación de la UI con post....................................................................... 55
4.3. Modificación de la UI con Handler.post......................................................... 57
4.4. Métodos combinados para modificar la UI ................................................... 59
4.5. Modificación de la UI con AsyncTask ........................................................... 64
4.6. Máquina tragaperras ...................................................................................... 67
5. SENSORES...........................................................................................................................76
5.1. Sensor de aceleración.................................................................................... 76
5.2. Lista de sensores de un teléfono................................................................... 85
5.3. Sensor de campo magnético ......................................................................... 87
5.4. Sensor de orientación..................................................................................... 95
5.5. Sensor de proximidad y sensor de luminosidad......................................... 103
6. DIÁLOGOS ........................................................................................................................ 110
6.1. Crear un diálogo ........................................................................................... 110
6.2. Diálogos con botones ................................................................................... 113
6.3. Diálogos con ítems ....................................................................................... 116
6.4. Diálogos de elección única .......................................................................... 118
6.5. Diálogos de elección múltiple ...................................................................... 121
6.6. Diálogos de progreso ................................................................................... 124
6.7. Diálogos personalizados .............................................................................. 127
7. MENÚS
7.1. Menú de opciones ........................................................................................ 132
7.2. Submenús ..................................................................................................... 134
7.3. Submenú con casillas................................................................................... 138
7.4. Menús de contexto ....................................................................................... 140
8. VISUALIZACIÓN DE LISTAS........................................................................................ 144
8.1. La clase ListView .......................................................................................... 144
8.2. Listas interactivas ......................................................................................... 146
8.3. ListView personalizado................................................................................. 150
8.4. Construcción de un BaseAdapter................................................................ 153
8.5. La clase ListActivity ...................................................................................... 160
8.6. Listas desplegables con SpinnerView......................................................... 162
9. BASES DE DATOS ........................................................................................................... 166
9.1. Elementos de SQLite y SQL ........................................................................ 166
9.1.1. Iniciar sqlite3 con ADB.............................................................................. 166
9.1.2. Crear una tabla .......................................................................................... 168
9.1.3. Algunas expresiones SQL ........................................................................ 169
9.2. Crear una base de datos con Android ........................................................ 171
9.3. Borrar filas de una tabla ............................................................................... 175
9.4. Automatizar las columnas del Cursor ......................................................... 176
9.5. Abrir una base de datos con SQLiteOpenHelper ....................................... 178
9.6. Borrar filas con delete................................................................................... 181
9.7. Realizar búsquedas con query .................................................................... 182
9.8. Adaptar un Cursor a un ListView................................................................. 189
10. PROVEEDORES DE CONTENIDOS............................................................................ 195
10.1. El proveedor de contactos ......................................................................... 195
10.2. La tabla de datos de los contactos............................................................ 202
10.3. La tabla raw contacts ................................................................................. 207
10.4. Añadir contactos ......................................................................................... 210
10.5. Otros proveedores de contenidos ............................................................. 219
10.6. Implementación de un ContentProvider.................................................... 226
10.7. Acceso externo a nuestro ContentProvider .............................................. 234
10.8. La clase UriMatcher.................................................................................... 239
11. COMUNICACIÓN ENTRE ACTIVIDADES ............................................................... 243
11.1. Secuencia de estados de una actividad ................................................... 243
11.2. Resultado de una actividad........................................................................ 249
11.3. Resultado de cancelar una subactividad .................................................. 255
11.4. Grupo de actividades ................................................................................. 256
11.5. Abrir aplicaciones externas explícitamente .............................................. 262
11.6. Abrir aplicaciones externas implícitamente .............................................. 265
11.7. Uso del PackageManager.......................................................................... 267
11.8. Filtro de datos en un intent ........................................................................ 272
11.9. Agregar funcionalidad de otras apps ........................................................ 278
12. INTERNET Y RSS FEEDS ............................................................................................. 285
12.1. Advertencia importante antes de conectar a Internet .............................. 285
12.2. Mostrar páginas web con WebView.......................................................... 285
12.3. Mostrar imágenes con WebView............................................................... 290
12.4. Mostrar HTML con WebView..................................................................... 291
12.5. Conexión HTTP .......................................................................................... 295
12.6. Introducción a XML y RSS......................................................................... 299
12.7. Análisis de documentos XML con DOM ................................................... 301
12.8. Extraer los valores de los elementos XML ............................................... 305
12.9. Conectar a un RSS feed ............................................................................ 310
12.10. Inspeccionar una página WEB con Jsoup.............................................. 318
12.11. Descargar y comprimir una imagen de Internet ..................................... 328
13. CORREO ELECTRÓNICO............................................................................................. 333
13.1. Enviar un email con un intent .................................................................... 333
13.2. Enviar un fichero adjunto por email........................................................... 337
13.3. Enviar ficheros comprimidos con zip......................................................... 342
14. LOCALIZACIÓN Y MAPAS ......................................................................................... 347
14.1. Coordenadas en Google Maps.................................................................. 347
14.2. El API de Google Maps .............................................................................. 350
14.3. MapView...................................................................................................... 352
14.4. Control de mapas ....................................................................................... 355
14.5. Geocodificación .......................................................................................... 360
14.6. Localización ................................................................................................ 367
14.7. Dibujar sobre un mapa y geocodificación inversa.................................... 375
APÉNDICE A ......................................................................................................................... 381
La interfaz de usuario .......................................................................................... 381
A.1. Orientación de una actividad....................................................................... 381
A.2. Dimensiones de la pantalla ......................................................................... 382
APÉNDICE B.......................................................................................................................... 385
Complementos de Java....................................................................................... 385
B.1. Métodos con número variable de parámetros............................................ 385
B.2. ArrayList ........................................................................................................ 387
B.3. Genéricos...................................................................................................... 390
B.4. Definición de una clase con tipos genéricos .............................................. 393
APÉNDICE C.......................................................................................................................... 396
Versiones de Android........................................................................................... 396
BIBLIOGRAFÍA.................................................................................................................... 397
Si en el libro Android, Programación de dispositivos móviles a través de ejemplos (Marcombo, 2012), se presentaba el material didáctico esencial para iniciarse rápidamente en la programación del sistema, en este segundo libro, el autor introduce al lector en técnicas más avanzadas (aunque no necesariamente más complicadas) para realizar sus propios programas, para smartphone, tablet o cualquier otro dispositivo con el sistema operativo Android. El lector aprenderá a programar: animaciones interpoladas, animaciones de fotogramas, procesos en background, sensores, diálogos, menús, visualización de listas, bases de datos, proveedores de contenidos, comunicación entre actividades, Internet y RSS feeds, correo electrónico, localización y mapas de Google. El material contenido en esta obra se plantea como una colección de más de 80 ejemplos escritos expresamente para ilustrar alguna técnica particular de Android. Los ejemplos son aplicaciones completas de Android acompañados de capturas de pantalla. La obra está dirigida a no especialistas, estudiantes, profesores y público en general. No se requieren conocimientos profundos de Java. José Enrique Amaro Soriano es autor del libro Android: Programación de Dispósitivos Móviles a Través de Ejemplos. Es Físico Nuclear y Profesor de la Universidad de Granada, en el Departamento de Física Atómica, Molecular y Nuclear. Es investigador responsable del Grupo de Física Nuclear a Energías Intermedias y miembro del Instituto Carlos I de Física Teórica y Computacional. Ha enseñado, entre otras materias, Física Cuántica, Física Atómica, Física Nuclear, Radiactividad, Reacciones Nucleares y Tecnología Nuclear. Ha impartido cursos de Programación de Android para Científicos, en la Escuela de Posgrado de la Universidad de Granada, y de Programación de Android con Java, en la Fundación Universidad-Empresa.