Read the book: «El gran libro de Android 9ed»

Font::



El gran libro de Android

Novena edición, 2022

© 2022 Jesús Tomás Gironés y Jaime Lloret Mauri

© 2022 MARCOMBO, S.L.

www.marcombo.com

Diseño de la cubierta: ENEDENÚ DISEÑO GRÁFICO

Corrección: Raquel Sayas Lloris

Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra.

ISBN: 978-84-267-3366-5

eISBN: 978-84-267-3465-5

DL: B 4225-2022

Producción del ePub: booqlab

Para Bea, con amor y gratitud.

Mis agradecimientos a los alumnos y lectores que con sus sugerencias y correcciones han ayudado a mejorar este libro.

Índice general

Lista de siglas y acrónimos

¿Cómo leer este libro?

CAPÍTULO 1. Visión general y entorno de desarrollo

1.1. ¿Qué hace que Android sea especial?

1.2. Los orígenes

1.3. Comparativa con otras plataformas

1.4. Arquitectura de Android

1.4.1. El núcleo Linux

1.4.2. Runtime de Android

1.4.3. Librerías nativas

1.4.4. Entorno de aplicación

1.4.5. Aplicaciones

1.5. Instalación del entorno de desarrollo

1.5.1. Instalación de la máquina virtual Java

1.5.2. Instalación de Android Studio

1.5.3. Creación de un dispositivo virtual Android (AVD)

1.6. Las versiones de Android y niveles de API

1.6.1. Las primeras versiones

1.6.2. Cupcake

1.6.3. Donut

1.6.4. Éclair

1.6.5. Froyo

1.6.6. Gingerbread

1.6.7. Honeycomb

1.6.8. Ice Cream Sandwich

1.6.9. Jelly Bean

1.6.10. KitKat

1.6.11. Lollipop

1.6.12. Marshmallow

1.6.13. Android Nougat

1.6.14. Android Oreo

1.6.15. Android Pie

1.6.16. Android 10

1.6.17. Android 11

1.6.18. Elección de la plataforma de desarrollo

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

1.7. Creación de un primer proyecto

1.8. Ejecución del programa

1.8.1. Ejecución en el emulador

1.8.2. Ejecución en un terminal real

1.9. Ficheros y carpetas de un proyecto Android

1.10. Componentes de una aplicación

1.10.1. Vista (View)

1.10.2. Layout

1.10.3. Actividad (Activity)

1.10.4. Fragmentos (Fragment)

1.10.5. Servicio (Service)

1.10.6. Intención (Intent)

1.10.7. Receptor de anuncios (Broadcast Receiver)

1.10.8. Proveedores de contenido (Content Provider)

1.11. Documentación y aplicaciones de ejemplo

1.11.1. Dónde encontrar documentación

1.11.2. Repositorio de ejemplos en GitHub

1.12. Depurar

1.12.1. Depurar con el entorno de desarrollo

1.12.2. Depurar con mensajes Log

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

1.13.1. La clase Lugar

1.13.2. Tipos enumerados

1.13.3. Las colecciones I

1.13.4. Las colecciones II

CAPÍTULO 2. Diseño de la interfaz de usuario: vistas y layouts

2.1. Creación de una interfaz de usuario por código

2.2. Creación de una interfaz de usuario usando XML

2.2.1. Edición visual de las vistas

2.2.2. Los atributos de las vistas

2.3. Layouts

2.3.1. Uso de ConstraitLayout

Uso de escritura derecha a izquierda

Posicionamiento Circular

2.4. Una aplicación de ejemplo: Asteroides

2.5. La aplicación Mis Lugares

2.6. Recursos alternativos

2.7. Tipos de recursos y recursos del sistema

2.7.1. Tipos de recursos

2.7.2. Acceso a los recursos

2.7.3. Recursos del sistema

2.8. Estilos y temas

2.8.1. Los estilos

Heredar de un estilo propio

2.8.2. Los temas

2.9. Uso práctico de vistas y layouts

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

2.10. Uso de tabs (pestañas)

2.10.1. Evento onClick en un Fragment

Los fragments son parte del mismo proceso

Los fragments son independientes

CAPÍTULO 3. Actividades e intenciones

3.1. Creación de nuevas actividades

3.2. Comunicación entre actividades

3.3. La barra de acciones (Toolbar)

3.4. Acceder a objetos globales de la aplicación

3.4.1. La clase Application

3.4.2. Uso del patrón Singleton

3.5. Uso de la arquitectura Clean en Mis Lugares

Capa de Modelo

Capa de Datos

Capa de Casos de Uso

Capa de Presentación

Organizando las clases en paquetes

3.6. Creando actividades en Mis Lugares

3.6.1. Creando la actividad VistaLugarActivity

3.6.2. Creando la actividad EdicionLugarActivity

3.7. Creación y uso de iconos

3.8. Añadiendo preferencias de usuario

3.8.1. Organizando preferencias<opcional>

3.8.2. Cómo se almacenan las preferencias de usuario<opcional>

3.8.3. Accediendo a los valores de las preferencias

3.8.4. Verificar valores correctos<opcional>

3.9. Añadiendo una lista de puntaciones en Asteroides

3.10. Creación de listas con RecyclerView

Personalizar los datos a mostrar

Distribuir los elementos

3.11. Las intenciones

3.11.1. Añadiendo fotografías en Mis Lugares

CAPÍTULO 4. Gráficos en Android

4.1. Clases para gráficos en Android

4.1.1. Canvas

4.1.2. Paint

Definición de colores

4.1.3. Path

4.1.4. Drawable

BitmapDrawable

VectorDrawable

GradientDrawable

TransitionDrawable

ShapeDrawable

AnimationDrawable

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

4.3. Creando la actividad principal de Asteroides

4.3.1. La clase Gráfico

4.3.2. La clase VistaJuego

4.3.3. Introduciendo la nave en VistaJuego

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

4.5. Animaciones

4.5.1. Animaciones de vistas

4.5.2. Animaciones de propiedades

CAPÍTULO 5. Hilos de ejecución, pantalla táctil y sensores

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

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

5.1.2. Hilos de ejecución en Android

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

5.1.4. Introduciendo movimiento en Asteroides

5.1.5. Ejecutar una tarea en un nuevo hilo con AsyncTask

5.1.6. Mostrar un cuadro de progreso en un AsyncTask

5.1.7. El método get() de AsyncTask

5.2. Manejando eventos de usuario

5.2.1. Escuchador de eventos de la clase View

5.2.2. Manejadores de eventos

5.3. El teclado

5.4. La pantalla táctil

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

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

5.5. Los sensores

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

5.5.2. Utilización de los sensores en Asteroides

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

5.6. Introduciendo un misil en Asteroides

CAPÍTULO 6. Multimedia y ciclo de vida de una actividad

6.1. Ciclo de vida de una actividad

6.1.1. ¿Qué proceso se elimina?

6.1.2. Guardando el estado de una actividad

6.2. Utilizando multimedia en Android

6.3. La vista VideoView

6.4. La clase MediaPlayer

6.4.1. Reproducción de audio con MediaPlayer

6.5. Un reproductor multimedia paso a paso

6.6. Introduciendo efectos de audio con SoundPool

6.7. Grabación de audio

CAPÍTULO 7. Seguridad y posicionamiento

7.1. Los tres pilares de la seguridad en Android

7.1.1. Ejecución en procesos independientes Linux

7.1.2. Firma digital de los apks

7.1.3. El esquema de permisos en Android

7.1.4. Permisos desde Android 6 Marshmallow

7.1.5. Permisos definidos por el programador en Android

7.1.6. Cambios relacionados con la privacidad en Android 9

7.1.7. Cambios relacionados con la privacidad en Android 10

7.2. Localización

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

7.2.2. La API de localización de Android

7.2.3. Emulación del GPS con Android Studio

7.2.4. Estrategias para escoger un proveedor de localización

Usar siempre el mismo tipo de proveedor

El mejor proveedor según un determinado criterio

Usar los dos proveedores en paralelo

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

7.3. Google Maps

7.3.1. Obtención de una clave Google Maps

CAPÍTULO 8. Servicios, notificaciones y receptores de anuncios

8.1. Introducción a los servicios en Android

8.1.1. Ciclo de vida de un servicio

8.1.2. Permisos

8.2. Un servicio para ejecución en segundo plano

8.2.1. El método onStartCommand()

8.3. Un servicio en un nuevo hilo con IntentService

8.3.1. La clase IntentService

8.4. Las notificaciones de la barra de estado

8.4.1. Configurando tipos de avisos en las notificaciones

Asociar un sonido

Añadiendo vibración

Añadiendo parpadeo de LED

8.4.2. Servicios en primer plano

8.5. Receptores de anuncios

8.5.1. Receptor de anuncios registrado en AndroidManifest.xml

8.5.2. Receptor de anuncios registrado por código

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

8.5.4. Arrancar un servicio tras cargar el sistema operativo

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

8.6.1. Receptores de anuncios desde Android 8

8.6.2. Anuncios broadcast permanentes

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

8.7.1. Crear la interfaz en AIDL

8.7.2. Implementar la interfaz

8.7.3. Publicar la interfaz en un servicio

8.7.4. Llamar a una interfaz remota

CAPÍTULO 9. Almacenamiento de datos

9.1. Alternativas para guardar datos permanentemente en Android

9.2. Añadiendo puntuaciones en Asteroides

9.2.1. Fragmentando los asteroides

9.3. Preferencias

9.4. Accediendo a ficheros

9.4.1. Sistema interno de ficheros

9.4.2. Sistema de almacenamiento externo

Verificando acceso a la memoria externa

Almacenando ficheros específicos de tu aplicación en el almacenamiento externo

Almacenando ficheros compartidos en el almacenamiento externo 449

Almacenamiento externo con varias unidades

9.4.3. Acceder a un fichero de los recursos

9.5. Trabajando con XML

9.5.1. Procesando XML con SAX

9.5.2. Procesando XML con DOM

9.6. Trabajando con JSON

9.6.1. Procesando JSON con la librería Gson

9.6.2. Procesando JSON con la librería org.json

9.7. Bases de datos con SQLite

9.7.1. Los métodos query() y rawQuery()

9.7.2. Uso de bases de datos en Mis Lugares

9.7.3. Adaptadores para bases de datos

Operaciones con bases de datos en Mis Lugares

9.7.4. Bases de datos relacionales

9.7.5. El método onUpgrade de la clase SQLiteOpenHelper

9.8. Content Provider

9.8.1. Conceptos básicos

El modelo de datos

Las URI

9.8.2. Acceder a la información de un ContentProvider

Leer información de un ContentProvider

Escribir información en un ContentProvider

Borrar y modificar elementos de un ContentProvider

9.8.3. Creación de un ContentProvider

Definir la estructura de almacenamiento del ContentProvider

Extendiendo la clase ContentProvider

Declarar el ContentProvider en AndroidManifest.xml

9.8.4. Acceso a PuntuacionesProvider desde Asteroides

CAPÍTULO 10. Internet: sockets, HTTP y servicios web

10.1. Comunicaciones en Internet mediante sockets

10.1.1. La arquitectura cliente/servidor

10.1.2. ¿Qué es un socket?

Sockets stream (TCP)

Sockets datagram (UDP)

10.1.3. Un ejemplo de un cliente/servidor de ECHO

10.1.4. Un servidor por sockets para las puntuaciones

10.2. La web y el protocolo HTTP

10.2.1. El protocolo HTTP

10.2.2. Versión 1.0 del protocolo HTTP

10.2.3. Utilizando HTTP desde Android

10.2.4. Uso de HTTP con AsyncTask

10.3. La librería Volley

10.3.1. Descargar un String con Volley

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

10.3.3. Descargar imágenes con Volley

10.4. Servicios web

10.4.1. Alternativas en los servicios web

Servicios web basados en SOAP

Servicios web basados en REST

10.4.2. Acceso a servicios web de terceros

10.4.3. Un servicio web con Apache, PHP y MySQL

Utilizando el servicio web PHP desde Asteroides

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

Utilizando AsyncTask de forma síncrona

10.4.4. Comparativa sockets/servicios web

ANEXO A. Diálogos de fecha y hora

Clases para trabajar con fechas en Java

ANEXO B. Fragments

ANEXO C. Referencia Java

ANEXO D. Referencia de la clase View y sus descendientes

ANEXO E. Sufijos utilizados en recursos alternativos

Lista de siglas y acrónimos


AIDL Android Interface Definition Language
API Application Programming Interface
AVD Android Virtual Device
ART Android RunTime
CSS Cascading Style Sheets
CORBA Common Object Request Broker Architecture
CPU Central Processing Unit
DOM Document Object Model
DTD Document Type Definition
FTP File Transfer Protocol
GPU Graphic Processing Unit
GPS Global Positioning System
GSM Global System for Mobile communications
HTML HyperText Markup Language
HTTP HyperText Transfer Protocol
IDE Integrated Development Environment
IMEI International Mobile Equipment Identity
IMSI International Mobile Subscriber Identity
IU Interfaz de Usuario
JAR Java ARchive
JDK Java Development Kit
JRE Java Runtime Environment
JSON JavaScript Object Notation
JVM Java Virtual Machine
MCC Mobile Country Code
MNC Mobile Network Code
MIME Multipurpose Internet Mail Extensions
MTP Media Transfer Protocol
NFC Near Field Communication
NDK Native Development Kit
OpenGL Open Graphic Library
PCM Pulse-Code Modulation
PDA Personal Digital Assistant
PNG Portable Network Graphics
PHP Hypertext Pre-processor
PTP Picture Transfer Protocol
RAM Random Access Memory
REST Representational State Transfer
RMI Remote Method Invocation
RPC Remote Procedure Calls
SAX Simple API for XML
SD Secure Digital
SDK Software Developers Kit
SMS Short Message Service
SIM Subscriber Identity Module
SO Sistema Operativo
SOA Service-Oriented Architecture
SOAP Simple Object Access Protocol
SQL Structured Query Language
SVG Scalable Vector Graphics
TCP Transmission Control Protocol
UI User Interface
URL Universal Resource Locator
URI Uniform Resource Identifier
USB Universal Serial Bus
UTC Universal Time Coordinate
UICC Universal Integrated Circuit Card
W3C World Wide Web Consortium
WSDL Web Services Description Language
WWW World Wide Web
XML Extensible Markup Language

Genres and tags

Age restriction:
0+
Volume:
1231 p. 1203 illustrations
ISBN:
9788426734655
Publishers:
Copyright Holder::
Bookwire
Download format:

Similar books