Páginas:
552
Edición:
7
Fecha de publicación:
19/09/2018
ISBN:
9788426726629
Formato:
17x24 cms
Colección

El gran libro de Android 7ªEd.

29,75 28,27
29,75 28,27
Añadir a cesta
Recíbelo en 24/48h

Android es la plataforma libre para el desaÊrrollo de aplicaciones moviles creada por Google. En la actualidad se ha convertido en la plataforma lider frente a otras como iPhone o Windows Phone. Las aplicaciones Android estan ampliando su rango de influencia a nuevos dispositivos tales como tabletas, Internet de las cosas, Wearables, TVs o automoviles.
Este libro pretende ser una guia para aquellos lectores que quieran introducirse en la programacion en Android. Todos los capitulos son descritos por medio de sencillos ejemplos, aumentando su nivel de complejidad a medida que avanzan los capitulos. La obra esta recomendada tanto para usuarios con poca experiencia, como para programadores experimentados.
A lo largo del libro se desarrollan dos aplicaciones de ejemplo: el mitico videojuego Asteroides y una aplicacion de gestion de informacion personal, Mis Lugares.

Se comienza con una version sencilla, que se ira completando capitulo a capitulo, para que incluya: fragments, graficos
vectoriales y en mapa de bits, control mediante pantalla tactil y sensores, hilos con AsyncTask, notificaciones, geo]localizacion, mapas, multimedia, ficheros, XML, JSON, SQL, acceso a Internet, servicios Web, acceso a bases de datos en servidor PHP + MySQL, Volleyc

El libro propone un aprendizaje activo, con actividades, muchas a traves de Internet:
Video[Tutorial]: Mas de 80 videos elaborados por el autor.
Ejercicio paso a paso: La mejor forma de aprender es practicando.
Practica: Para afianzar lo aprendido hay que practicar.
Solucion: Te sera de ayuda si tienes problemas en las practicas.
Recursos adicionales: Localiza rapidamente la informacion clave
Preguntas de repaso y reflexion: .Lo has entendido todo correctamente?
Jesus Tomas es doctor en informatica, profesor titular del Departamento de Comunicaciones en la Universidad Politecnica de Valencia. Trabaja en multiples proyectos de investigacion y transferencia de tecnologia relacionados con inteligencia artificial.
Ha publicado gran cantidad de trabajos en revistas cientificas y varios libros

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 ………………………………………… 30
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. Elección de la plataforma de desarrollo ………………………………………. 47
1.6.17. Las librerías de compatibilidad (support library) ……………………………. 49
1.7. Creación de un primer programa …………………………………………………….. 51
1.8. Ejecución del programa………………………………………………………………….. 55
1.8.1. Ejecución en el emulador ………………………………………………………….. 55
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.11.3. La aplicación ApiDemos ……………………………………………………………. 65
1.12. Depurar ……………………………………………………………………………………….. 67
1.12.1. Depurar con el entorno de desarrollo ………………………………………….. 67
1.12.2. Depurar con mensajes Log ……………………………………………………….. 68
1.13. Repaso de Java y la aplicación Mis Lugares …………………………………….. 69
1.13.1. La clase Lugar …………………………………………………………………………. 71
1.13.2. Tipos enumerados en Java ……………………………………………………….. 75
1.13.3. Las colecciones en Java …………………………………………………………… 77

CAPÍTULO 2. Diseño de la interfaz de usuario: vistas y layouts ……………………….. 79
2.1. Creación de una interfaz de usuario por código ………………………………… 80
2.2. Creación de una interfaz de usuario usando XML ……………………………… 81
2.2.1. Edición visual de las vistas ………………………………………………………… 84
2.2.2. Los atributos de las vistas …………………………………………………………. 90
2.3. Layouts ………………………………………………………………………………………… 91
2.3.1. Uso de ConstraitLayout …………………………………………………………….. 96
2.4. Una aplicación de ejemplo: Asteroides …………………………………………… 104
2.5. La aplicación Mis Lugares …………………………………………………………….. 107
2.6. Recursos alternativos …………………………………………………………………… 110
2.7. Tipos de recursos y recursos del sistema ……………………………………….. 115
2.7.1. Tipos de recursos …………………………………………………………………… 115
2.7.2. Acceso a los recursos …………………………………………………………….. 117
2.7.3. Recursos del sistema ……………………………………………………………… 118
2.8. Estilos y temas ……………………………………………………………………………. 119
2.8.1. Los estilos ……………………………………………………………………………… 119
Heredar de un estilo propio ……………………………………………………… 120
2.8.2. Los temas ……………………………………………………………………………… 121
2.9. Uso práctico de vistas y layouts …………………………………………………….. 122
2.9.1. Acceder y modificar propiedades de las vistas por código …………… 124
2.10. Uso de tabs (pestañas) ………………………………………………………………… 126

CAPÍTULO 3. Actividades e intenciones ………………………………………………… 131
3.1. Creación de nuevas actividades ……………………………………………………. 132
3.2. Comunicación entre actividades ……………………………………………………. 137
3.3. Añadiendo un menú a una actividad ………………………………………………. 138
3.4. La barra de acciones (ActionBar) …………………………………………………… 141
3.5. Creando actividades en Mis Lugares ……………………………………………… 144
3.5.1. Creando la actividad VistaLugarActivity …………………………………….. 144
3.5.2. Creando la actividad EdicionLugarActivity …………………………………. 154
3.6. Creación y uso de iconos ……………………………………………………………… 157
3.7. Añadiendo preferencias de usuario ……………………………………………….. 161
3.7.1. Organizando preferencias ……………………………………………………….. 164
3.7.2. Cómo se almacenan las preferencias de usuario ……………………….. 165
3.7.3. Accediendo a los valores de las preferencias …………………………….. 166
3.7.4. Verificar valores correctos<opcional> ……………………………………………… 167
3.8. Añadiendo una lista de puntaciones en Asteroides ………………………….. 168
3.9. Creación de listas con RecyclerView ……………………………………………… 171
3.10. Las intenciones …………………………………………………………………………… 182
3.10.1. Añadiendo fotografías en Mis Lugares ………………………………………. 189
Cargar fotografías grandes de forma eficiente …………………………… 193
3.10.2. La etiqueta <intent-filter> …………………………………………………………. 196

CAPÍTULO 4. Gráficos en Android ………………………………………………………… 197
4.1. Clases para gráficos en Android ……………………………………………………. 198
4.1.1. Canvas ………………………………………………………………………………….. 198
4.1.2. Paint ……………………………………………………………………………………… 201
Definición de colores ………………………………………………………………. 202
4.1.3. Path ……………………………………………………………………………………… 203
4.1.4. Drawable ……………………………………………………………………………….. 205
BitmapDrawable …………………………………………………………………….. 206
VectorDrawable ……………………………………………………………………… 207
GradientDrawable ………………………………………………………………….. 211
TransitionDrawable ………………………………………………………………… 212
ShapeDrawable ……………………………………………………………………… 213
AnimationDrawable ………………………………………………………………… 213
4.2. Creación de una vista en un fichero independiente ………………………….. 214
4.3. Creando la actividad principal de Asteroides …………………………………… 218
4.3.1. La clase Gráfico ……………………………………………………………………… 219
4.3.2. La clase VistaJuego ……………………………………………………………….. 222
4.3.3. Introduciendo la nave en VistaJuego ………………………………………… 224
4.4. Representación de gráficos vectoriales en Asteroides …………………….. 226
4.5. Animaciones ……………………………………………………………………………….. 229
4.5.1. Animaciones de vistas …………………………………………………………….. 230
4.5.2. Animaciones de propiedades …………………………………………………… 233

CAPÍTULO 5. Hilos de ejecución, pantalla táctil y sensores …………………… 235
5.1. Uso de hilos de ejecución (threads) ……………………………………………….. 236
5.1.1. Introducción a los procesos e hilos de ejecución ………………………… 236
5.1.2. Hilos de ejecución en Android ………………………………………………….. 236
5.1.3. Creación de nuevos hilos con la clase Thread ……………………………. 239
5.1.4. Introduciendo movimiento en Asteroides …………………………………… 242
5.1.5. Ejecutar una tarea en un nuevo hilo con AsyncTask …………………… 245
5.1.6. Mostrar un cuadro de progreso en un AsyncTask ………………………. 248
5.1.7. El método get() de AsyncTask …………………………………………………. 250
5.2. Manejando eventos de usuario ……………………………………………………… 252
5.2.1. Escuchador de eventos de la clase View …………………………………… 252
5.2.2. Manejadores de eventos …………………………………………………………. 254
5.3. El teclado ……………………………………………………………………………………. 254
5.4. La pantalla táctil ………………………………………………………………………….. 256
5.4.1. Manejo de la pantalla táctil multi-touch ……………………………………… 260
5.4.2. Manejo de la nave con la pantalla táctil …………………………………….. 262
5.4.3. Gestures ……………………………………………………………………………….. 263
5.5. Los sensores ………………………………………………………………………………. 264
5.5.1. Un programa que muestra los sensores disponibles y sus valores en tiempo real …………. 269
5.5.2. Utilización de los sensores en Asteroides ………………………………….. 271
5.6. Introduciendo un misil en Asteroides ……………………………………………… 273

CAPÍTULO 6. Multimedia y ciclo de vida de una actividad …………………….. 279
6.1. Ciclo de vida de una actividad ………………………………………………………. 280
6.1.1. ¿Qué proceso se elimina? ……………………………………………………….. 285
6.1.2. Guardando el estado de una actividad ………………………………………. 288
6.2. Utilizando multimedia en Android …………………………………………………… 290
6.3. La vista VideoView ………………………………………………………………………. 292
6.4. La clase MediaPlayer …………………………………………………………………… 294
6.4.1. Reproducción de audio con MediaPlayer …………………………………… 295
6.5. Un reproductor multimedia paso a paso …………………………………………. 296
6.6. Introduciendo efectos de audio con SoundPool ………………………………. 302
6.7. Grabación de audio ……………………………………………………………………… 304

CAPÍTULO 7. Seguridad y posicionamiento …………………………………………… 309
7.1. Los tres pilares de la seguridad en Android …………………………………….. 310
7.1.1. Usuario Linux y acceso a ficheros …………………………………………….. 311
7.1.2. El esquema de permisos en Android …………………………………………. 311
7.1.3. Permisos en Android 6 Marshmallow ………………………………………… 317
7.1.4. Permisos definidos por el programador en Android …………………….. 323
7.2. Localización ………………………………………………………………………………… 326
7.2.1. Sistemas de geolocalización en dispositivos móviles ………………….. 327
7.2.2. La API de localización de Android …………………………………………….. 327
7.2.3. Emulación del GPS con Android Studio …………………………………….. 332
7.2.4. Estrategias para escoger un proveedor de localización ………………. 333
7.3. Google Maps ………………………………………………………………………………. 338
7.3.1. Obtención de una clave Google Maps ………………………………………. 339
7.4. Fragmentando los asteroides ………………………………………………………… 352

CAPÍTULO 8. Servicios, notificaciones y receptores de anuncios ………….. 355
8.1. Introducción a los servicios en Android …………………………………………… 356
8.1.1. Ciclo de vida de un servicio ……………………………………………………… 357
8.1.2. Permisos ……………………………………………………………………………….. 359
8.2. Un servicio para ejecución en segundo plano …………………………………. 359
8.2.1. El método onStartCommand() ………………………………………………….. 362
8.3. Un servicio en un nuevo hilo con IntentService ……………………………….. 363
8.3.1. La clase IntentService …………………………………………………………….. 366
8.4. Las notificaciones de la barra de estado …………………………………………. 368
8.4.1. Configurando tipos de avisos en las notificaciones ……………………… 373
Asociar un sonido …………………………………………………………………… 373
Añadiendo vibración ……………………………………………………………….. 373
Añadiendo parpadeo de LED …………………………………………………… 374
8.5. Receptores de anuncios……………………………………………………………….. 375
8.5.1. Receptor de anuncios registrado en AndroidManifest.xml ……………. 375
8.5.2. Arrancar una actividad en una nueva tarea desde un receptor de anuncio ……………….. 380
8.5.3. Arrancar un servicio tras cargar el sistema operativo ………………….. 382
8.5.4. Anuncios broadcast permanentes …………………………………………….. 384
8.6. Un receptor de anuncios como mecanismo de comunicación…………… 384
8.7. Un servicio como mecanismo de comunicación entre aplicaciones ……. 386
8.7.1. Crear la interfaz en AIDL …………………………………………………………. 387
8.7.2. Implementar la interfaz ……………………………………………………………. 388
8.7.3. Publicar la interfaz en un servicio ……………………………………………… 389
8.7.4. Llamar a una interfaz remota ……………………………………………………. 390

CAPÍTULO 9. Almacenamiento de datos ……………………………………………….. 393
9.1. Alternativas para guardar datos permanentemente en Android …………. 394
9.2. Añadiendo puntuaciones en Asteroides ………………………………………….. 395
9.3. Preferencias ……………………………………………………………………………….. 397
9.4. Accediendo a ficheros ………………………………………………………………….. 400
9.4.1. Sistema interno de ficheros ……………………………………………………… 401
9.4.2. Sistema de almacenamiento externo ………………………………………… 403
Verificando acceso a la memoria externa ………………………………….. 405
Almacenando ficheros específicos de tu aplicación en el
almacenamiento externo …………………………………………………………. 406
Almacenando ficheros compartidos en el almacenamiento externo …. 408
Almacenando externo con varias unidades ……………………………….. 408
9.4.3. Acceder a un fichero de los recursos ………………………………………… 409
9.5. Trabajando con XML ……………………………………………………………………. 411
9.5.1. Procesando XML con SAX ………………………………………………………. 412
9.5.2. Procesando XML con DOM ……………………………………………………… 417
9.6. Trabajando con JSON ………………………………………………………………….. 418
9.6.1. Procesando JSON con la librería Gson …………………………………….. 419
9.6.2. Procesando JSON con la librería org.json …………………………………. 422
9.7. Bases de datos con SQLite …………………………………………………………… 424
9.7.1. Los métodos query() y rawQuery() ……………………………………………. 427
9.7.2. Uso de bases de datos en Mis Lugares …………………………………….. 429
9.7.3. Adaptadores para bases de datos …………………………………………….. 432
Operaciones con bases de datos en Mis Lugares ………………………. 438
Loaders y LoaderManager ………………………………………………………. 445
9.7.4. Bases de datos relacionales …………………………………………………….. 446
9.7.5. El método onUpgrade de la clase SQLiteOpenHelper …………………. 449
9.8. Content Provider …………………………………………………………………………. 450
9.8.1. Conceptos básicos …………………………………………………………………. 451
El modelo de datos ………………………………………………………………… 451
Las URI ………………………………………………………………………………… 451
9.8.2. Acceder a la información de un ContentProvider ………………………… 452
Leer información de un ContentProvider …………………………………… 453
Escribir información en un ContentProvider ………………………………. 455
Borrar y modificar elementos de un ContentProvider ………………….. 456
9.8.3. Creación de un ContentProvider ………………………………………………. 457
Definir la estructura de almacenamiento del ContentProvider ……… 457
Extendiendo la clase ContentProvider ………………………………………. 458
Declarar el ContentProvider en AndroidManifest.xml ………………….. 462
9.8.4. Acceso a PuntuacionesProvider desde Asteroides ……………………… 463

CAPÍTULO 10. Internet: sockets, HTTP y servicios web …………………………… 465
10.1. Comunicaciones en Internet mediante sockets ……………………………….. 466
10.1.1. La arquitectura cliente/servidor ………………………………………………… 466
10.1.2. ¿Qué es un socket?………………………………………………………………… 466
Sockets stream (TCP) …………………………………………………………….. 467
Sockets datagram (UDP) ………………………………………………………… 467
10.1.3. Un ejemplo de un cliente/servidor de ECHO ………………………………. 468
10.1.4. Un servidor por sockets para las puntuaciones ………………………….. 473
10.2. La web y el protocolo HTTP ………………………………………………………….. 476
10.2.1. El protocolo HTTP ………………………………………………………………….. 477
10.2.2. Versión 1.0 del protocolo HTTP ……………………………………………….. 478
10.2.3. Utilizando HTTP desde Android ……………………………………………….. 480
10.2.4. Uso de HTTP con AsyncTask ………………………………………………….. 485
10.3. La librería Volley ………………………………………………………………………….. 486
10.3.1. Descargar un String con Volley ………………………………………………… 487
10.3.2. Paso de parámetros con el método POST …………………………………. 489
10.3.3. Descargar imágenes con Volley ……………………………………………….. 490
10.4. Servicios web ……………………………………………………………………………… 493
10.4.1. Alternativas en los servicios web ………………………………………………. 493
Servicios web basados en SOAP …………………………………………….. 494
Servicios web basados en REST ……………………………………………… 495
10.4.2. Acceso a servicios web de terceros ………………………………………….. 499
10.4.3. Un servicio web con Apache, PHP y MySQL ……………………………… 502
Utilizando el servicio web PHP desde Asteroides ………………………. 508
Creación de un servicio web en un servidor de hosting ………………. 510
Utilizando AsyncTask de forma síncrona …………………………………… 513
10.4.4. Comparativa sockets / servicios web ………………………………………… 516

ANEXO A. Fragments …………………………………………………………………………….. .519

ANEXO B. Diálogos de fecha y hora ……………………………………………………….. 533
Clases para trabajar con fechas en Java …………………………………… 533

ANEXO C. Referencia Java ……………………………………………………………………… 541

ANEXO D. Referencia de la clase View y sus descendientes ……………………. 551

ANEXO E. Sufijos utilizados en recursos alternativos ……………………………… 551

A color
Páginas:
552
Edición:
7
Año Publicación:
19/09/2018
ISBN:
9788426726629
Formato:
17x24 cms
Colección

Relacionados

¿Quiéres conocer las últimas novedades?

Inscribiéndote recibirás unos regalos exclusivos para ti