La plataforma Android 1. Presentación 13 2. Origen 14 3. Google Play 15 3.1 Creación de una Cuenta de desarrollador 16 3.2 Publicación de una aplicación 17 3.3 Seguimiento y actualización de una aplicación 18 El entorno de desarrollo 1. Entorno Java 21 2. Android Studio 22 2.1 Presentación 22 2.2 Instalación 23 2.3 Uso 23 3. SDK Android 25 3.1 Presentación 25 3.2 Configuración 26 3.3 Contenido del SDK 28 4. Emulador 29 4.1 Presentación 29 4.2 Creación 29 4.2.1 Creación de un emulador desde Android Studio 29 4.2.2 Creación de un emulador por línea de comandos 33 4.3 Genymotion 34 1/13
Principios de programación 1. Arquitectura Android 37 2. ART (Android RunTime) 38 3. NDK (Native Development Kit) 39 4. APK (Android Package) 39 4.1 Creación de un keystore 40 4.2 Creación de APK firmado 42 5. Componentes Android 44 5.1 Activity (actividad) 44 5.2 Fragment (fragmento) 44 5.3 Service (servicio) 45 5.4 Broadcast receiver (receptor de eventos) 46 5.5 Content provider (proveedor de contenido) 46 5.6 Intent (intenciones) 47 5.6.1 Intent-filter (filtros de intención) 47 5.6.2 pendingintent 48 5.7 La clase Application 48 6. Ciclo de vida de una actividad 49 6.1 Estado de una actividad 49 6.2 Back stack 50 6.3 Ciclo de vida 51 7. Contexto de una aplicación 53 8. Manifiesto 53 9. Permissions (permisos) 55 2/13
9.1 Utilizar una permission 56 9.2 Declarar sus permissions 56 Mi primera aplicación: HelloAndroid 1. Creación del proyecto 59 2. Arquitectura del proyecto 63 3. Explicaciones 65 3.1 Android Manifest 66 3.2 Resources (recursos) 67 3.3 Archivo generado 70 3.4 Archivo fuente 72 3.5 Archivo de configuración 73 4. Resultado 74 Creación de interfaces sencillas 1. Las vistas 77 1.1 Declarar identificadores 78 1.2 Especificar el tamaño de los elementos 79 1.3 Combinar con actividades 79 2. Layouts 81 2.1 FrameLayout 81 2.2 LinearLayout 82 2.3 TableLayout 86 2.4 RelativeLayout 87 2.5 GridLayout 91 2.6 ScrollView 92 3/13
3. Recursos 93 3.1 Drawable 94 3.2 Los valores (Values) 95 3.2.1 Cadenas de caracteres 95 3.2.2 Tablas 99 3.2.3 Dimensiones 100 3.2.4 Colores 101 4. Elementos imprescindibles 101 4.1 Etiqueta de texto 101 4.2 Campo de edición de texto 102 4.3 Botón 103 4.4 Checkbox 103 4.5 Imagen 104 4.6 Gestión del clic 104 5. Lista 106 5.1 Crear una lista 107 5.2 Personalizar una lista 110 5.3 Actualizar una lista 117 5.4 Optimizar una vista (ViewHolder) 118 5.5 RecyclerView 120 5.6 CardView 124 6. ActionBar 126 6.1 Principios 126 6.2 Color de las barras de navegación 130 6.3 Ocultar la ActionBar 132 6.4 Gestión de las versiones anteriores 132 6.5 La navegación con ActionBar 134 6.6 Toolbar 143 7. Ejercicio 145 4/13
Navegación y gestión de eventos 1. Principio 147 2. Navegación entre pantallas 148 3. Paso de datos entre pantallas 148 3.1 Obtener un resultado 153 3.2 Parcelable 155 4. Invocar a otras aplicaciones 159 5. Ejecutar una acción 161 6. Ejercicio 162 Depuración y gestión de errores 1. Principios 165 2. Android Device Monitor 165 3. Logs 167 3.1 Logcat 167 3.2 Utilizar los logs 167 4. Android Lint 169 5. ADB (Android Debug Bridge) 170 6. Depuración paso a paso 171 5/13
7. Interacción con el emulador 172 7.1 Simular llamadas 172 7.2 Simular mensajes 173 7.3 Simular una posición GPS 173 8. Pruebas en el teléfono 173 8.1 Utilizar su teléfono 173 9. Opciones de desarrollo 174 10. Pruebas unitarias 175 11. Monkey Stress Test 177 Personalización 1. Material Design 179 1.1 Temas 180 1.1.1 Definición 180 1.1.2 Implementación 182 1.2 Estado de los componentes 183 1.2.1 Estados 183 1.2.2 Implementación 183 1.3 Degradado 185 1.4 Elevación 188 1.5 Ripple Effect 188 2. Fuentes 190 3. Iconos 194 6/13
4. Animaciones 195 4.1 Tween Animation 195 4.2 Frame Animation 198 4.3 Animación de transición 199 5. Gestión de eventos 201 5.1 Pulsación de teclas 201 5.2 Supervisión de la entrada 202 5.3 Tocar la pantalla 206 6. Gestión de la rotación 206 6.1 Gestión del modo apaisado 207 6.2 Bloquear la vista en un solo modo 211 6.3 Gestionar manualmente la rotación de pantalla 212 Notificaciones 1. Principio 213 2. Apariencia 214 3. Implementación 216 3.1 Crear una notificación 216 3.2 Compatibilidad con las versiones anteriores 219 4. Acciones 220 5. Prioridad 221 6. Visibilidad 222 7/13
7. Categoría 222 8. Contenido de gran tamaño 223 9. Android Wear 223 10. Ejercicio 229 Creación de interfaces avanzadas 1. Fragment 231 1.1 Ciclo de vida de un fragment 232 1.2 La clase Fragment 233 1.3 Los fragmentos estáticos 233 1.4 Fragmentos dinámicos 242 1.5 Gestión de los fragments 244 1.6 Gestión de las versones anteriores 245 2. ViewPager 245 2.1 Implementación 245 2.2 Pestañas 248 3. Popups 250 3.1 Toasts 250 3.2 AlertDialog 251 3.3 ProgressDialog 252 3.4 Cuadro de diálogo personalizado 254 4. WebView 255 4.1 Ejemplo de una página web remota 255 4.2 Ajustes del WebView 256 8/13
4.3 Gestión del botón retorno 256 4.4 Uso de código nativo en JavaScript 257 5. Preferencias 259 6. Interfaces dinámicas 263 7. Creación de vistas personalizadas 265 Persistencia y compartición de datos 1. Introducción 269 2. SharedPreferences 269 3. Almacenamiento interno 272 3.1 Escritura de un archivo 272 3.2 Lectura de un archivo 273 3.3 Utilización de archivos en caché 274 4. Almacenamiento externo 274 4.1 Comprobar la disponibilidad del almacenamiento externo 274 4.2 Acceder a los archivos de una aplicación 276 4.3 Acceder a archivos compartidos 277 5. Almacenamiento en base de datos 277 6. ContentProvider 287 6.1 Crear un ContentProvider 288 6.2 Utilizar un ContentProvider 294 7. Compartir sus datos con otras aplicaciones 296 9/13
8. Recibir datos desde otras aplicaciones 298 9. Recuperar datos almacenados en línea 301 9.1 Conectarse a Internet a través del dispositivo 301 9.2 Gestión del cambio de conectividad 302 9.3 Conexión a una dirección remota 303 9.4 XML Parsing 305 9.5 Parsing JSON 307 Tratamiento en tareas en segundo plano 1. Introducción 311 2. AsyncTask 313 3. Thread y Handler 318 4. Servicios 321 4.1 Crear y utilizar un servicio 322 4.2 Asociar un servicio a una actividad 324 5. Broadcast Receiver 326 5.1 Recibir un evento 326 5.2 Enviar un evento 329 6. Alarmas 329 6.1 Presentación 329 6.2 Implementación 329 Google Maps y geolocalización 10/13
1. Requisitos 333 1.1 Instalación de las APIs de Google 333 1.2 Obtención de su clave de Google Maps 334 1.2.1 Generación de su firma SHA-1 334 1.2.2 Obtención de su clave 336 2. Integración de un Google Map 338 2.1 Creación de la vista Google Maps 338 2.2 Añadir opciones al Google Map 343 2.2.1 Definir el nivel de zoom 343 2.2.2 Visualización en modo satélite 343 3. Localización 344 4. Situar un marcador en el mapa 348 5. Conversión posición/dirección 349 Telefonía y hardware 1. Obtener información relativa a las características del teléfono 351 2. Gestión de las llamadas y los mensajes 352 2.1 Gestión de llamadas 353 2.1.1 Realizar una llamada 353 2.1.2 Gestionar las llamadas entrantes 354 2.2 Gestión de mensajes 355 2.2.1 Envío de SMS 355 2.2.2 Recepción de mensajes 357 3. Cámara 359 11/13
3.1 Utilizar la aplicación Cámara del dispositivo 359 3.2 Controlar la cámara 364 4. Sensores en Android 364 4.1 Principio 364 4.2 Acelerómetro 366 4.3 Giroscopio 369 4.4 Sensor magnético 370 5. Bluetooth 372 5.1 Activar el Bluetooth 373 5.2 Permitir a otros dispositivos conectarse 375 6. NFC 378 7. TTS (Text To Speech) 380 Ir más lejos 1. Widget 383 1.1 Presentación 383 1.2 Implementación 384 2. Buenas prácticas 389 2.1 Mantenerse independiente de la resolución de pantalla 389 2.2 Mantenerse independiente del tamaño de pantalla 389 2.3 Ser independiente de la versión de Android utilizada 390 2.4 Ser eficiente 390 3. Optimizar sus interfaces 391 3.1 Inspeccionar la jerarquía de sus interfaces 391 3.2 Fusionar layouts 393 3.3 Incluir vistas 394 12/13
3.4 Carga perezosa (Lazy Loading) de layouts 395 4. Actualizar una aplicación a Lollipop 396 índice 399 13/13