Inicio/Profesional/TICs y Computación/Otros/EL GRAN LIBRO DE ANDROID – 8ª Edición

EL GRAN LIBRO DE ANDROID – 8ª Edición

$628

Consultar disponibilidad

Autor: TOMÁS GIRONÉS, Jesús

Páginas:  600

Año:  2021

Edición:  8

Editorial: Alfaomega – Marcombo

Apoyos: 

Nivel:  

Encuadernación: Rustica

Consultar disponibilidad

ISBN: 9786075387185 Categorías: , ,

Descripción

Android es la plataforma libre para el desarrollo de aplicaciones móviles creada por Google. En la actualidad se ha convertido en la plataforma líder frente a otras como iPhone o Windows Phone. Las aplicaciones Android están ampliando su rango de influencia a nuevos dispositivos tales como tabletas, internet de las cosas, Wearables, TV o automóviles.

Si quieres introducirte en la programación Android, has llegado al libro indicado. Todos sus capítulos están descritos por medio de ejemplos, cuyo nivel de complejidad aumenta a medida que avanza la lectura.

A lo largo del libro se desarrollan dos aplicaciones de ejemplo:

el mítico videojuego Asteroides y una aplicación de gestión de información personal, Mis Lugares*.

Se comienza con una versión sencilla, que se irá completando capítulo a capítulo, para que incluya fragments, gráficos vectoriales y mapa de bits, control mediante pantalla táctil y sensores, hilos con AsyncTask, notificaciones, geolocalización, mapas, multimedia, ficheros, XML, JSON, SQL, acceso a Internet, servicios Web, acceso a bases de datos en servidor PHP + MySQL, Volley…

El libro propone un aprendizaje activo, con actividades, muchas a través de Internet:

Vídeo[Tutorial]: Más de 100 vídeos elaborados por el autor.

Kotlin: Aprende el nuevo lenguaje de programación para Android.

Ejercicio paso a paso: La mejor forma de aprender es practicando.

Práctica: Para afianzar lo aprendido hay que practicar.

Solución: Te será de ayuda si tienes problemas en las prácticas.

Recursos adicionales: Localiza rápidamente la información clave.

Preguntas de repaso y reflexión: ¿Lo has entendido todo correctamente?

No esperes más: tanto si eres un usuario con poca experiencia como un programador experimentado, con este libro perfeccionarás tu programación Android.

Jesús Tomás es doctor en informática, profesor titular del Departamento de Comunicaciones en la Universidad Politécnica de Valencia. Trabaja en múltiples proyectos de investigación y transferencia de tecnología relacionados con inteligencia artificial. Ha publicado gran cantidad de trabajos en revistas científicas y varios libros didácticos sobre nuevas tecnologías. Tiene una amplia experiencia impartiendo cursos de formación para empresas.

Índice general
Lista de siglas y acrónimos ……………………………………………………………………… xvi
¿Cómo leer este libro? …………………………………………………………………………… xviii
CAPÍTULO 1. Visión general y entorno de desarrollo ……………………………… 21
1.1. ¿Qué hace que Android sea especial? …………………………………………….. 22
1.2. Los orígenes …………………………………………………………………………………. 23
1.3. Comparativa con otras plataformas …………………………………………………. 24
1.4. Arquitectura de Android………………………………………………………………….. 26
1.4.1. El núcleo Linux ………………………………………………………………………… 27
1.4.2. Runtime de Android ………………………………………………………………….. 27
1.4.3. Librerías nativas ………………………………………………………………………. 28
1.4.4. Entorno de aplicación ……………………………………………………………….. 28
1.4.5. Aplicaciones …………………………………………………………………………….. 29
1.5. Instalación del entorno de desarrollo ……………………………………………….. 29
1.5.1. Instalación de la máquina virtual Java ………………………………………… 29
1.5.2. Instalación de Android Studio …………………………………………………….. 30
1.5.3. Creación de un dispositivo virtual Android (AVD) …………………………. 33
1.6. Las versiones de Android y niveles de API ……………………………………….. 36
1.6.1. Las primeras versiones …………………………………………………………….. 37
1.6.2. Cupcake ………………………………………………………………………………….. 37
1.6.3. Donut ……………………………………………………………………………………… 38
1.6.4. Éclair ………………………………………………………………………………………. 38
1.6.5. Froyo ………………………………………………………………………………………. 38
1.6.6. Gingerbread …………………………………………………………………………….. 39
1.6.7. Honeycomb ……………………………………………………………………………… 40
1.6.8. Ice Cream Sandwich ………………………………………………………………… 41
1.6.9. Jelly Bean ……………………………………………………………………………….. 41
1.6.10.KitKat ……………………………………………………………………………………… 42
1.6.11.Lollipop …………………………………………………………………………………… 43

1.6.12.Marshmallow ……………………………………………………………………………. 44
1.6.13.Android Nougat ………………………………………………………………………… 45
1.6.14.Android Oreo …………………………………………………………………………… 46
1.6.15.Android Pie ……………………………………………………………………………… 47
1.6.16.Android 10 ………………………………………………………………………………. 48
1.6.17.Android 11 ………………………………………………………………………………. 48
1.6.18.Elección de la plataforma de desarrollo ………………………………………. 49
1.6.19.Las librerías de compatibilidad (support library) ……………………………. 51
1.7. Creación de un primer proyecto ………………………………………………………. 52
1.8. Ejecución del programa………………………………………………………………….. 55
1.8.1. Ejecución en el emulador ………………………………………………………….. 56
1.8.2. Ejecución en un terminal real …………………………………………………….. 56
1.9. Ficheros y carpetas de un proyecto Android …………………………………….. 58
1.10. Componentes de una aplicación ……………………………………………………… 61
1.10.1.Vista (View) ……………………………………………………………………………… 62
1.10.2.Layout …………………………………………………………………………………….. 62
1.10.3.Actividad (Activity) ……………………………………………………………………. 62
1.10.4.Fragmentos (Fragment) …………………………………………………………….. 62
1.10.5.Servicio (Service) ……………………………………………………………………… 63
1.10.6.Intención (Intent) ………………………………………………………………………. 63
1.10.7.Receptor de anuncios (Broadcast Receiver) ………………………………… 63
1.10.8.Proveedores de contenido (Content Provider) ……………………………… 63
1.11. Documentación y aplicaciones de ejemplo ……………………………………….. 64
1.11.1.Dónde encontrar documentación ……………………………………………….. 64
1.11.2.Repositorio de ejemplos en GitHub …………………………………………….. 64
1.12. Depurar ……………………………………………………………………………………….. 65
1.12.1.Depurar con el entorno de desarrollo ………………………………………….. 65
1.12.2.Depurar con mensajes Log ……………………………………………………….. 67
1.13. Introducción Java/Kotlin y aplicación Mis Lugares …………………………….. 68
1.13.1.La clase Lugar …………………………………………………………………………. 69
1.13.2.Tipos enumerados ……………………………………………………………………. 74
1.13.3.Las colecciones I ……………………………………………………………………… 76

1.13.4.Las colecciones II …………………………………………………………………….. 78
CAPÍTULO 2. Diseño de la interfaz de usuario: vistas y layouts……………………….. 81
2.1. Creación de una interfaz de usuario por código ………………………………… 82
2.2. Creación de una interfaz de usuario usando XML ……………………………… 83
2.2.1. Edición visual de las vistas ………………………………………………………… 86
2.2.2. Los atributos de las vistas …………………………………………………………. 92
2.3. Layouts ………………………………………………………………………………………93
2.3.1. Uso de ConstraitLayout …………………………………………………………….. 99
Uso de escritura derecha a izquierda ……………………………………….. 104
Posicionamiento Circular ………………………………………………………… 105
2.4. Una aplicación de ejemplo: Asteroides …………………………………………… 109
2.5. La aplicación Mis Lugares …………………………………………………………….. 111
2.6. Recursos alternativos …………………………………………………………………… 114
2.7. Tipos de recursos y recursos del sistema ……………………………………….. 119
2.7.1. Tipos de recursos …………………………………………………………………… 119
2.7.2. Acceso a los recursos …………………………………………………………….. 121
2.7.3. Recursos del sistema ……………………………………………………………… 122
2.8. Estilos y temas ……………………………………………………………………………. 123
2.8.1. Los estilos ……………………………………………………………………………… 123
Heredar de un estilo propio ……………………………………………………… 124
2.8.2. Los temas ……………………………………………………………………………… 125
2.9. Uso práctico de vistas y layouts ……………………………………………………..126
2.9.1. Acceder y modificar propiedades de las vistas por código …………… 129
2.10. Uso de tabs (pestañas) ………………………………………………………………… 131
2.10.1.Evento onClick en un Fragment ……………………………………………….. 137
CAPÍTULO 3. Actividades e intenciones ………………………………………………… 141
3.1. Creación de nuevas actividades ……………………………………………………. 142
3.2. Comunicación entre actividades ……………………………………………………. 148
3.3. La barra de acciones (Toolbar) ……………………………………………………… 150
3.4. Acceder a objetos globales de la aplicación ……………………………………. 154
3.4.1. La clase Application ………………………………………………………………… 155
3.4.2. Uso del patrón Singleton …………………………………………………………. 157

4.2. Creación de una vista en un fichero independiente ………………………….. 242
4.3. Creando la actividad principal de Asteroides …………………………………… 246
4.3.1. La clase Gráfico ……………………………………………………………………… 247
4.3.2. La clase VistaJuego ……………………………………………………………….. 250
4.3.3. Introduciendo la nave en VistaJuego ………………………………………… 251
4.4. Representación de gráficos vectoriales en Asteroides …………………….. 253
4.5. Animaciones ……………………………………………………………………………….. 257
4.5.1. Animaciones de vistas …………………………………………………………….. 257
4.5.2. Animaciones de propiedades …………………………………………………… 260
CAPÍTULO 5. Hilos de ejecución, pantalla táctil y sensores …………………… 262
5.1. Uso de hilos de ejecución (threads) ……………………………………………….. 263
5.1.1. Introducción a los procesos e hilos de ejecución ………………………… 263
5.1.2. Hilos de ejecución en Android ………………………………………………….. 263
5.1.3. Creación de nuevos hilos con la clase Thread ……………………………. 266
5.1.4. Introduciendo movimiento en Asteroides …………………………………… 269
5.1.5. Ejecutar una tarea en un nuevo hilo con AsyncTask …………………… 272
5.1.6. Mostrar un cuadro de progreso en un AsyncTask ………………………. 275
5.1.7. El método get() de AsyncTask …………………………………………………. 277
5.2. Manejando eventos de usuario ……………………………………………………… 279
5.2.1. Escuchador de eventos de la clase View …………………………………… 279
5.2.2. Manejadores de eventos …………………………………………………………. 281
5.3. El teclado ……………………………………………………………………………………. 281
5.4. La pantalla táctil ………………………………………………………………………….. 284
5.4.1. Manejo de la pantalla táctil multi-touch ……………………………………… 286
5.4.2. Manejo de la nave con la pantalla táctil …………………………………….. 289
5.5. Los sensores ………………………………………………………………………………. 290
5.5.1. Un programa que muestra los sensores disponibles y sus
valores en tiempo real …………………………………………………………….. 295
5.5.2. Utilización de los sensores en Asteroides ………………………………….. 297
5.5.3. Restricciones al uso de sensores en segundo plano en Android 9 .. 299
5.6. Introduciendo un misil en Asteroides ……………………………………………… 299
CAPÍTULO 6. Multimedia y ciclo de vida de una actividad …………………….. 305

6.1. Ciclo de vida de una actividad ………………………………………………………. 306
6.1.1. ¿Qué proceso se elimina? ……………………………………………………….. 312
6.1.2. Guardando el estado de una actividad ………………………………………. 314
6.2. Utilizando multimedia en Android …………………………………………………… 317
6.3. La vista VideoView ………………………………………………………………………. 319
6.4. La clase MediaPlayer …………………………………………………………………… 321
6.4.1. Reproducción de audio con MediaPlayer …………………………………… 322
6.5. Un reproductor multimedia paso a paso …………………………………………. 322
6.6. Introduciendo efectos de audio con SoundPool ………………………………. 328
6.7. Grabación de audio ……………………………………………………………………… 331
CAPÍTULO 7. Seguridad y posicionamiento …………………………………………… 337
7.1. Los tres pilares de la seguridad en Android …………………………………….. 338
7.1.1. Ejecución en procesos independientes Linux …………………………….. 339
7.1.2. Firma digital de los apks ………………………………………………………….. 339
7.1.3. El esquema de permisos en Android …………………………………………. 340
7.1.4. Permisos desde Android 6 Marshmallow …………………………………… 346
7.1.5. Permisos definidos por el programador en Android …………………….. 352
7.1.6. Cambios relacionados con la privacidad en Android 9 ………………… 356
7.1.7. Cambios relacionados con la privacidad en Android 10 ………………. 356
7.2. Localización ………………………………………………………………………………… 357
7.2.1. Sistemas de geolocalización en dispositivos móviles ………………….. 358
7.2.2. La API de localización de Android …………………………………………….. 358
7.2.3. Emulación del GPS con Android Studio …………………………………….. 365
7.2.4. Estrategias para escoger un proveedor de localización ………………. 365
7.2.5. Límites de ubicación en segundo plano …………………………………….. 374
7.3. Google Maps ………………………………………………………………………………. 375
7.3.1. Obtención de una clave Google Maps ………………………………………. 376
CAPÍTULO 8. Servicios, notificaciones y receptores de anuncios …………. 393
8.1. Introducción a los servicios en Android …………………………………………… 394
8.1.1. Ciclo de vida de un servicio ……………………………………………………… 395
8.1.2. Permisos ……………………………………………………………………………….. 397
8.2. Un servicio para ejecución en segundo plano …………………………………. 397

8.2.1. El método onStartCommand() ………………………………………………….. 400
8.3. Un servicio en un nuevo hilo con IntentService ……………………………….. 400
8.3.1. La clase IntentService …………………………………………………………….. 403
8.4. Las notificaciones de la barra de estado …………………………………………. 405
8.4.1. Configurando tipos de avisos en las notificaciones ……………………… 410
Asociar un sonido …………………………………………………………………… 410
Añadiendo vibración ……………………………………………………………….. 410
Añadiendo parpadeo de LED …………………………………………………… 411
8.4.2. Servicios en primer plano ………………………………………………………… 412
8.5. Receptores de anuncios……………………………………………………………….. 414
8.5.1. Receptor de anuncios registrado en AndroidManifest.xml ……………. 414
8.5.2. Arrancar una actividad en una nueva tarea desde un receptor de
anuncio …………………………………………………………………………………. 420
8.5.3. Arrancar un servicio tras cargar el sistema operativo ………………….. 421
8.5.4. Anuncios broadcast permanentes …………………………………………….. 423
8.6. Un receptor de anuncios como mecanismo de comunicación……………. 423
8.6.1. Receptores de anuncios desde Android 8 …………………………………. 425
8.7. Un servicio como mecanismo de comunicación entre aplicaciones ……. 425
8.7.1. Crear la interfaz en AIDL …………………………………………………………. 427
8.7.2. Implementar la interfaz ……………………………………………………………. 427
8.7.3. Publicar la interfaz en un servicio ……………………………………………… 428
8.7.4. Llamar a una interfaz remota ……………………………………………………. 429
CAPÍTULO 9. Almacenamiento de datos ……………………………………………….. 433
9.1. Alternativas para guardar datos permanentemente en Android …………. 434
9.2. Añadiendo puntuaciones en Asteroides ………………………………………….. 435
9.2.1. Fragmentando los asteroides …………………………………………………… 437
9.3. Preferencias ……………………………………………………………………………….. 438
9.4. Accediendo a ficheros ………………………………………………………………….. 441
9.4.1. Sistema interno de ficheros ……………………………………………………… 442
9.4.2. Sistema de almacenamiento externo ………………………………………… 445
Verificando acceso a la memoria externa ………………………………….. 446
Almacenando ficheros específicos de tu aplicación en el
almacenamiento externo …………………………………………………………. 447

Almacenando ficheros compartidos en el almacenamiento externo 448
Almacenando externo con varias unidades ……………………………….. 449
9.4.3. Acceder a un fichero de los recursos ………………………………………… 450
9.5. Trabajando con XML ……………………………………………………………………. 452
9.5.1. Procesando XML con SAX ………………………………………………………. 453
9.5.2. Procesando XML con DOM ……………………………………………………… 458
9.6. Trabajando con JSON ………………………………………………………………….. 459
9.6.1. Procesando JSON con la librería Gson …………………………………….. 459
9.6.2. Procesando JSON con la librería org.json …………………………………. 463
9.7. Bases de datos con SQLite …………………………………………………………… 465
9.7.1. Los métodos query() y rawQuery() ……………………………………………. 468
9.7.2. Uso de bases de datos en Mis Lugares …………………………………….. 469
9.7.3. Adaptadores para bases de datos …………………………………………….. 473
Operaciones con bases de datos en Mis Lugares ………………………. 482
9.7.4. Bases de datos relacionales …………………………………………………….. 492
9.7.5. El método onUpgrade de la clase SQLiteOpenHelper …………………. 496
9.8. Content Provider …………………………………………………………………………. 497
9.8.1. Conceptos básicos …………………………………………………………………. 497
El modelo de datos ………………………………………………………………… 497
Las URI ………………………………………………………………………………… 498
9.8.2. Acceder a la información de un ContentProvider ………………………… 499
Leer información de un ContentProvider …………………………………… 499
Escribir información en un ContentProvider ………………………………. 502
Borrar y modificar elementos de un ContentProvider ………………….. 503
9.8.3. Creación de un ContentProvider ………………………………………………. 503
Definir la estructura de almacenamiento del ContentProvider ……… 504
Extendiendo la clase ContentProvider ………………………………………. 505
Declarar el ContentProvider en AndroidManifest.xml ………………….. 508
9.8.4. Acceso a PuntuacionesProvider desde Asteroides ……………………… 509
CAPÍTULO 10. Internet: sockets, HTTP y servicios web …………………………… 511
10.1. Comunicaciones en Internet mediante sockets ……………………………….. 512
10.1.1.La arquitectura cliente/servidor ………………………………………………… 512

10.1.2.¿Qué es un socket?………………………………………………………………… 512
Sockets stream (TCP) …………………………………………………………….. 513
Sockets datagram (UDP) ………………………………………………………… 513
10.1.3.Un ejemplo de un cliente/servidor de ECHO ………………………………. 514
10.1.4.Un servidor por sockets para las puntuaciones ………………………….. 518
10.2. La web y el protocolo HTTP ………………………………………………………….. 522
10.2.1.El protocolo HTTP ………………………………………………………………….. 522
10.2.2.Versión 1.0 del protocolo HTTP ……………………………………………….. 524
10.2.3.Utilizando HTTP desde Android ……………………………………………….. 526
10.2.4.Uso de HTTP con AsyncTask ………………………………………………….. 530
10.3. La librería Volley ………………………………………………………………………….. 532
10.3.1.Descargar un String con Volley ………………………………………………… 532
10.3.2.Paso de parámetros con el método POST …………………………………. 535
10.3.3.Descargar imágenes con Volley ……………………………………………….. 535
10.4. Servicios web ……………………………………………………………………………… 538
10.4.1.Alternativas en los servicios web ………………………………………………. 538
Servicios web basados en SOAP …………………………………………….. 539
Servicios web basados en REST ……………………………………………… 540
10.4.2.Acceso a servicios web de terceros ………………………………………….. 545
10.4.3.Un servicio web con Apache, PHP y MySQL ……………………………… 547
Utilizando el servicio web PHP desde Asteroides ………………………. 553
Creación de un servicio web en un servidor de hosting ………………. 555
Utilizando AsyncTask de forma síncrona …………………………………… 558
10.4.4.Comparativa sockets/servicios web ………………………………………….. 562
ANEXO A. Diálogos de fecha y hora …………………………………………………. 563
Clases para trabajar con fechas en Java …………………………………… 563
ANEXO B. Fragments ………………………………………………………………………. 573
ANEXO C. Referencia Java ……………………………………………………………….. 589
ANEXO D. Referencia de la clase View y sus descendientes ……………………. 59
ANEXO E. Sufijos utilizados en recursos alternativos ……………………………… 59

Información adicional

Peso 1.100 kg
Dimensiones 23 × 17 × 2 cm

Título

Ir a Arriba