Envíos gratis en compras superiores a $60.000
Inicio/Profesional/TICs y Computación/Programación/El Gran Libro de Android 9na ed

El Gran Libro de Android 9na ed

$54.943

  • Envío gratis en compras superiores a $60.000
  • AUTOR: Jesús Tomás Gironés y Jaime Lloret Mauri

    PÁGINAS: 602

    EDITORIAL: Alfaomega – Marcombo

    ISBN: 9788426733665 Categoría:

    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