El gran libro de android 9na ed

El gran libro de android 9na ed

Consultar disponibilidad

AUTOR: Jesús Tomás Gironés y Jaime Lloret Mauri

PÁGINAS: 602

EDITORIAL: Alfaomega – Marcombo

Consultar disponibilidad

SKU: 9788426733665 Categorías: , ,

Consultar

Contacto mobile home
Nombre
Nombre
Nombre
Apellido

Consultar

Contacto AO
Nombre
Nombre
Nombre
Apellido

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 36

1.6.2. Cupcake 37

1.6.3. Donut 37

1.6.4. Éclair 37

1.6.5. Froyo 38

1.6.6. Gingerbread 38

1.6.7. Honeycomb 39

1.6.8. Ice Cream Sandwich 40

1.6.9. Jelly Bean 41

1.6.10. KitKat 41

1.6.11. Lollipop 42

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 47

1.6.17. Android 11 48

1.6.18. Elección de la plataforma de desarrollo 48

1.6.19. Las librerías de compatibilidad (support library) 50

1.7. Creación de un primer proyecto 51

1.8. Ejecución del programa 54

1.8.1. Ejecución en el emulador 55

1.8.2. Ejecución en un terminal real 55

1.9. Ficheros y carpetas de un proyecto Android 57

1.10. Componentes de una aplicación 60

1.10.1. Vista (View) 61

1.10.2. Layout 61

1.10.3. Actividad (Activity) 61

1.10.4. Fragmentos (Fragment) 61

1.10.5. Servicio (Service) 62

1.10.6. Intención (Intent) 62

1.10.7. Receptor de anuncios (Broadcast Receiver) 62

1.10.8. Proveedores de contenido (Content Provider) 62

1.11. Documentación y aplicaciones de ejemplo 63

1.11.1. Dónde encontrar documentación 63

1.11.2. Repositorio de ejemplos en GitHub 63

1.12. Depurar 64

1.12.1. Depurar con el entorno de desarrollo 64

1.12.2. Depurar con mensajes Log 65

1.13. Introducción Java/Kotlin y aplicación Mis Lugares 67

1.13.1. La clase Lugar 68

1.13.2. Tipos enumerados 73

1.13.3. Las colecciones I 75

1.13.4. Las colecciones II 76

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 103

Posicionamiento Circular 104

2.4. Una aplicación de ejemplo: Asteroides 108

2.5. La aplicación Mis Lugares 110

2.6. Recursos alternativos 113

2.7. Tipos de recursos y recursos del sistema 118

2.7.1. Tipos de recursos 118

2.7.2. Acceso a los recursos 120

2.7.3. Recursos del sistema 121

2.8. Estilos y temas 122

2.8.1. Los estilos 122

Heredar de un estilo propio 123

2.8.2. Los temas 124

2.9. Uso práctico de vistas y layouts 125

2.9.1. Acceder y modificar propiedades de las vistas por código 128

2.10. Uso de tabs (pestañas) 130

2.10.1. Evento onClick en un Fragment 136

Los fragments son parte del mismo proceso 136

Los fragments son independientes 137

CAPÍTULO 3.

Actividades e intenciones 139

3.1. Creación de nuevas actividades 140

3.2. Comunicación entre actividades 146

3.3. La barra de acciones (Toolbar) 148

3.4. Acceder a objetos globales de la aplicación 152

3.4.1. La clase Application 153

3.4.2. Uso del patrón Singleton 155

3.5. Uso de la arquitectura Clean en Mis Lugares 158

Capa de Modelo 158

Capa de Datos 159

Capa de Casos de Uso 159

Capa de Presentación 159

Organizando las clases en paquetes 160

3.6. Creando actividades en Mis Lugares 162

3.6.1. Creando la actividad VistaLugarActivity 162

3.6.2. Creando la actividad EdicionLugarActivity 173

3.7. Creación y uso de iconos 178

3.8. Añadiendo preferencias de usuario 183

3.8.1. Organizando preferencias 187

3.8.2. Cómo se almacenan las preferencias de usuario 188

3.8.3. Accediendo a los valores de las preferencias 189

3.8.4. Verificar valores correctos 190

3.9. Añadiendo una lista de puntaciones en Asteroides 191

3.10. Creación de listas con RecyclerView 193

Personalizar los datos a mostrar 194

Distribuir los elementos 195

3.11. Las intenciones 206

3.11.1. Añadiendo fotografías en Mis Lugares 214

CAPÍTULO 4.

Gráficos en Android 223

4.1. Clases para gráficos en Android 224

4.1.1. Canvas 224

4.1.2. Paint 227

Definición de colores 228

4.1.3. Path 229

4.1.4. Drawable 231

BitmapDrawable 232

VectorDrawable 233

GradientDrawable 237

TransitionDrawable 238

ShapeDrawable 238

AnimationDrawable 239

4.2. Creación de una vista en un fichero independiente 240

4.3. Creando la actividad principal de Asteroides 244

4.3.1. La clase Gráfico 245

4.3.2. La clase VistaJuego 248

4.3.3. Introduciendo la nave en VistaJuego 249

4.4. Representación de gráficos vectoriales en Asteroides 251

4.5. Animaciones 255

4.5.1. Animaciones de vistas 255

4.5.2. Animaciones de propiedades 258

CAPÍTULO 5.

Hilos de ejecución, pantalla táctil y sensores 261

5.1. Uso de hilos de ejecución (threads) 262

5.1.1. Introducción a los procesos e hilos de ejecución 262

5.1.2. Hilos de ejecución en Android 262

5.1.3. Creación de nuevos hilos con la clase Thread 265

5.1.4. Introduciendo movimiento en Asteroides 268

5.1.5. Ejecutar una tarea en un nuevo hilo con AsyncTask 271

5.1.6. Mostrar un cuadro de progreso en un AsyncTask 274

5.1.7. El método get() de AsyncTask 276

5.2. Manejando eventos de usuario 278

5.2.1. Escuchador de eventos de la clase View 278

5.2.2. Manejadores de eventos 280

5.3. El teclado 280

5.4. La pantalla táctil 283

5.4.1. Manejo de la pantalla táctil multi-touch 285

5.4.2. Manejo de la nave con la pantalla táctil 288

5.5. Los sensores 289

5.5.1. Un programa que muestra los sensores disponibles y sus valores en tiempo real 294

5.5.2. Utilización de los sensores en Asteroides 296

5.5.3. Restricciones al uso de sensores en segundo plano en Android 9 298

5.6. Introduciendo un misil en Asteroides 298

CAPÍTULO 6.

Multimedia y ciclo de vida de una actividad 303

6.1. Ciclo de vida de una actividad 304

6.1.1. ¿Qué proceso se elimina? 310

6.1.2. Guardando el estado de una actividad 312

6.2. Utilizando multimedia en Android 315

6.3. La vista VideoView 317

6.4. La clase MediaPlayer 319

6.4.1. Reproducción de audio con MediaPlayer 320

6.5. Un reproductor multimedia paso a paso 320

6.6. Introduciendo efectos de audio con SoundPool 328

6.7. Grabación de audio 330

CAPÍTULO 7.

Seguridad y posicionamiento 335

7.1. Los tres pilares de la seguridad en Android 336

7.1.1. Ejecución en procesos independientes Linux 337

7.1.2. Firma digital de los apks 337

7.1.3. El esquema de permisos en Android 338

7.1.4. Permisos desde Android 6 Marshmallow 344

7.1.5. Permisos definidos por el programador en Android 350

7.1.6. Cambios relacionados con la privacidad en Android 9 354

7.1.7. Cambios relacionados con la privacidad en Android 10 354

7.2. Localización 355

7.2.1. Sistemas de geolocalización en dispositivos móviles 356

7.2.2. La API de localización de Android 356

7.2.3. Emulación del GPS con Android Studio 363

7.2.4. Estrategias para escoger un proveedor de localización 363

Usar siempre el mismo tipo de proveedor 364

El mejor proveedor según un determinado criterio 364

Usar los dos proveedores en paralelo 364

7.2.5. Límites de ubicación en segundo plano 372

7.3. Google Maps 373

7.3.1. Obtención de una clave Google Maps 374

CAPÍTULO 8.

Servicios, notificaciones y receptores de anuncios 391

8.1. Introducción a los servicios en Android 392

8.1.1. Ciclo de vida de un servicio 393

8.1.2. Permisos 395

8.2. Un servicio para ejecución en segundo plano 395

8.2.1. El método onStartCommand() 398

8.3. Un servicio en un nuevo hilo con IntentService 399

8.3.1. La clase IntentService 402

8.4. Las notificaciones de la barra de estado 404

8.4.1. Configurando tipos de avisos en las notificaciones 408

Asociar un sonido 409

Añadiendo vibración 409

Añadiendo parpadeo de LED 409

8.4.2. Servicios en primer plano 410

8.5. Receptores de anuncios 412

8.5.1. Receptor de anuncios registrado en AndroidManifest.xml 413

8.5.2. Receptor de anuncios registrado por código 415

8.5.3. Arrancar una actividad en una nueva tarea desde un receptor

de anuncio 420

8.5.4. Arrancar un servicio tras cargar el sistema operativo 422

8.6. Un receptor de anuncios como mecanismo de comunicación 423

8.6.1. Receptores de anuncios desde Android 8 425

8.6.2. Anuncios broadcast permanentes 425

8.7. Un servicio como mecanismo de comunicación entre aplicaciones 426

8.7.1. Crear la interfaz en AIDL 427

8.7.2. Implementar la interfaz 428

8.7.3. Publicar la interfaz en un servicio 429

8.7.4. Llamar a una interfaz remota 430

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 442

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 449

Almacenamiento 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 460

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 470

9.7.3. Adaptadores para bases de datos 474

Operaciones con bases de datos en Mis Lugares 483

9.7.4. Bases de datos relacionales 493

9.7.5. El método onUpgrade de la clase SQLiteOpenHelper 496

9.8. Content Provider 497

9.8.1. Conceptos básicos 498

El modelo de datos 498

Las URI 498

9.8.2. Acceder a la información de un ContentProvider 499

Leer información de un ContentProvider 500

Escribir información en un ContentProvider 502

Borrar y modificar elementos de un ContentProvider 503

9.8.3. Creación de un ContentProvider 504

Definir la estructura de almacenamiento del ContentProvider 504

Extendiendo la clase ContentProvider 505

Declarar el ContentProvider en AndroidManifest.xml 509

9.8.4. Acceso a PuntuacionesProvider desde Asteroides 510

CAPÍTULO 10.

Internet: sockets, http y servicios web 513

10.1. Comunicaciones en Internet mediante sockets 514

10.1.1. La arquitectura cliente/servidor 514

10.1.2. ¿Qué es un socket? 514

Sockets stream (TCP) 515

Sockets datagram (UDP) 515

10.1.3. Un ejemplo de un cliente/servidor de ECHO 516

10.1.4. Un servidor por sockets para las puntuaciones 520

10.2. La web y el protocolo http 524

10.2.1. El protocolo http 524

10.2.2. Versión 1.0 del protocolo http 526

10.2.3. Utilizando http desde Android 527

10.2.4. Uso de http con AsyncTask 532

10.3. La librería Volley 534

10.3.1. Descargar un String con Volley 534

10.3.2. Paso de parámetros con el método POST 537

10.3.3. Descargar imágenes con Volley 537

10.4. Servicios web 540

10.4.1. Alternativas en los servicios web 541

Servicios web basados en SOAP 541

Servicios web basados en REST 542

10.4.2. Acceso a servicios web de terceros 547

10.4.3. Un servicio web con Apache, PHP y MySQL 550

Utilizando el servicio web PHP desde Asteroides 555

Creación de un servicio web en un servidor de hosting 557

Utilizando AsyncTask de forma síncrona 561

10.4.4. Comparativa sockets/servicios web 564

ANEXO A. Diálogos de fecha y hora 565

Clases para trabajar con fechas en Java 565

ANEXO B. Fragments 575

ANEXO C. Referencia Java 591

ANEXO D. Referencia de la clase View y sus descendientes 595

ANEXO E. Sufijos utilizados en recursos alternativos 595

Ir a Arriba