En los últimos años, los teléfonos móviles están transformando la forma en que las personas se comunican. Esta revolución no ha hecho más que empezar, los nuevos terminales ofrecen unas capacidades similares a un ordenador personal, pero a diferencia de un ordenador, un teléfono móvil siempre está en el bolsillo del usuario. Esto permite un nuevo abanico de aplicaciones mucho más cercanas al usuario, convirtiendo a los móviles en el nuevo ordenador personal del siglo XXI. Android es la nueva plataforma de software libre para el desarrollo de aplicaciones móviles desarrollada por Google. En la actualidad se está convirtiendo en la alternativa líder frente a otras plataformas como iPhone, Windows Mobile o Symbian. Las aplicaciones Android están ampliando su rango de influencia a nuevos dispositivos como tabletas, netbooks o los nuevos televisores Google TV. Este libro quiere ser una guía para aquellos lectores que pretendan introducirse en la programación de aplicaciones en Android. Todos los capítulos son descritos por medio de sencillos ejemplos, aumentando su nivel de complejidad a medida que avanzan los capítulos. Esta obra está recomendada tanto para usuarios con poca experiencia, como para programadores experimentados. A lo largo del libro se desarrolla una aplicación de ejemplo, el mítico videojuego Asteroids. Comienza con una versión sencilla, que se irá completando capítulo a capítulo para que incluya gráficos vectoriales en mapa de bits y 3D, control mediante pantalla táctil y sensores, efectos multimedia, acceso a Internet, etc. Gracias a este libro podrá sacar provecho de las novedades incorporadas en los nuevos teléfonos móviles. Entre los temas desarrollados destacamos: Características de las diferentes versiones de Android, incluyendo la versión para tabletas 3.0; Cómo desarrollar el interfaz de usuario adaptado a diferentes dispositivos; Gráficos en 2D y 3D; Uso de la pantalla táctil y los sensores; Reproducción de audio y vídeo almacenando información en ficheros, bases de datos y documentos XML; Posicionamiento basado en GPS, telefonía móvil y WiFi; Cómo intercambiar información por Internet y diseño de servicios Web. Finalmente, se describe cómo publicar tus aplicaciones en el Market.ÍndiceCAPÖTULO 1. Visi¢n general y entorno de desarrollo 1.1. ¿Qu‚ hace Android 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 Eclipse 1.5.3. Instalar Android SDK de Google 1.5.4. Instalaci¢n del plug-in Android para Eclipse (ADT) 1.6. Creaci¢n de un primer programa 1.6.1. Las plataformas de desarrollo 1.6.1.1. Android 1.0 Nivel de API 1 (septiembre 2008) 1.6.1.2. Android 1.1 Nivel de API 2 (febrero 2009) 1.6.1.3. Android 1.5 Nivel de API 3 (abril 2009, Cupcake) 1.6.1.4. Android 1.6 Nivel de API 4 (diciembre 2009, Donut) 1.6.1.5. Android 2.0 Nivel de API 5 (octubre 2009, clair) 1.6.1.6. Android 2.1 Nivel de API 7 (enero 2010, clair) 1.6.1.7. Android 2.2 Nivel de API 8 (mayo 2010, Froyo) 1.6.1.8. Android 2.3 Nivel de API 9 (diciembre 2010, Gingerbread) 1.6.1.9. Android 3.0 Nivel de API 11 (febrero 2011, Honeycomb) 1.6.2. Elecci¢n de la plataforma de desarrollo 1.6.3. Creaci¢n del proyecto 1.7. Ejecuci¢n del programa 1.7.1. Ejecuci¢n en el emulador 1.7.2. Ejecuci¢n en un terminal 1.8. Elementos de un proyecto Android 1.9. Aspectos clave en Android 1.9.1. Vista ( View ) 1.9.2. Actividad ( Activity ) 1.9.3. Intento ( Intent ) 1.9.4. Servicio ( Service ) 1.9.5. Proveedores de Contenido ( Content Provider ) 1.10. Documentaci¢n y ApiDemos 1.10.1. Donde encontrar documentaci¢n 1.10.2. La aplicaci¢n ApiDemos CAPÖTULO 2. Dise¿o de la interfaz de usuario 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. Layouts 2.3. Una aplicaci¢n de ejemplo: Asteroides 2.3.1. Usando recursos alternativos 2.4. Implementaci¢n de una caja Acerca de 2.4.1. Aplicando un tema 2.5. A¿adiendo un men£ 2.5.1. Los estilos 2.5.2. Aplicando temas 2.6. A¿adiendo preferencias 2.6.1. Organizando preferencias 2.6.2. Como se almacenan los valores de las preferencias 2.6.3. Accediendo a los valores de las preferencias 2.7. Depurar 2.7.1. Depurar con Eclipse 2.7.2. Depurar con mensajes Log CAPÖTULO 3. Gr ficos en Android 3.1. Elementos gr ficos 3.1.1. Canvas 3.1.2. Paint 3.1.2.1. Definici¢n de colores 3.1.3. Path 3.1.4. Drawable 3.1.4.1. BitmapDrawable 3.1.4.2. GradienDrawable 3.1.4.3. TransitionDrawable 3.1.4.4. ShapeDrawable 3.1.4.5. AnimationDrawable 3.2. Creando la actividad principal de Asteroides 3.2.1. La clase gr fico 3.3. Representaci¢n de gr ficos vectoriales en Asteroides 3.4. Introduciendo el movimiento en Asteroides CAPÖTULO 4. Entradas en Android: teclado, pantalla t ctil y sensores 4.1. Manejando eventos de usuario 4.1.1. Escuchador de eventos 4.1.2. Manejadores de eventos 4.2. El teclado 4.3. La pantalla t ctil 4.4. Gestures 4.4.1. Creaci¢n de una librer¡a de gestures 4.4.2. A¿adiendo la librer¡a de gestures a nuestra aplicaci¢n 4.4.3. A¿adiendo gestures a Asteroides 4.5. Los sensores 4.5.1. Listar los sensores del dispositivo 4.5.2. Acceso a los datos del sensor 4.5.2.1. Obtenci¢n de datos de los sensores 4.5.3. Utilizaci¢n de los sensores en Asteroides 4.6. Introduciendo un misil en Asteroides CAPÖTULO 5. Multimedia y ciclo de vida de una aplicaci¢n 5.1. Ciclo de vida de una aplicaci¢n 5.1.1. ¿Qu‚ proceso se elimina? 5.1.2. Aplicando eventos del ciclo de vida en Asteroides 5.1.3. Guardando el estado de una actividad 5.2. Utilizando multimedia en Android 5.3. Reproducir un v¡deo con VideoView 5.4. La clase MediaPlayer 5.4.1. Reproducci¢n de audio de fondo incorporado como un recurso 5.5. Un reproductor multimedia pas¢ a paso CAPÖTULO 6. Seguridad y posicionamiento 6.1. Seguridad en Android 6.1.1. Usuario Linux y acceso a ficheros 6.1.2. El esquema de permisos en Android 6.1.2.1. Creando tus propios permisos 6.2. Localizaci¢n 6.2.1. Emulaci¢n del GPS con Eclipse 6.3. Google Maps 6.3.1. Obtenci¢n de una clave Google Maps 6.3.2. Un programa de ejemplo 6.4. Fragmentando los asteroides CAPÖTULO 7. Almacenamiento de datos 7.1. A¿adiendo lista de puntuaciones en Android 7.2. Comunicaci¢n entre actividades 7.3. Accediendo a ficheros 7.3.1. Sistema interno de ficheros 7.3.2. Almacenando puntuaciones en el sistema de ficheros interno 7.3.3. La tarjeta SD 7.3.4. Acceder a un fichero de los recursos 7.4. Trabajando con XML 7.4.1. Procesando XML con SAX 7.4.2. Procesando XML con DOM 7.5. Bases de datos 7.5.1. Utilizando una base de datos para guardar puntuaciones 7.6. Utilizando la clase ContentProvider 7.6.1. Conceptos b sicos 7.6.1.1. El modelo de datos 7.6.1.2. Las URI 7.6.2. Acceder a la informaci¢n de un ContentProvider 7.6.2.1. Leer informaci¢n de un ContentProvider 7.6.2.2. Escribir informaci¢n en un ContentProvider 7.6.2.3. Borrar y modificar elementos de un ContentProvider 7.6.3. Creaci¢n de un ContentProvider 7.6.3.1. Definir la estructura de almacenamiento del ContentProvider210 7.6.3.2. Extendiendo la clase ContentProvider 7.6.3.3. Declarar el ContentProvider en AndroidManifest.xml 7.6.4. Acceso a PuntuacionesProvider desde Asteroides CAPÖTULO 8. Internet: sockets , HTTP y servicios web 8.1. Comunicaciones en Internet mediante sockets 8.1.1. La arquitectura cliente/servidor 8.1.2. Qu‚ es un socket ? 8.1.2.1. Sockets stream (TCP) 8.1.2.2. Sockets datagram (UDP) 8.1.3. Un ejemplo de un cliente / servidor de ECHO 8.1.4. Almacenando las puntuaciones en un servidor por sockets 8.2. La web y el protocolo HTTP 8.2.1. El protocolo HTTP 8.2.1.1. Versi¢n 1.0 de HTTP 8.2.1.2. Versi¢n 1.1 de HTTP 8.2.2. Utilizando HTTP desde Android 8.3. Servicios web 8.3.1. Alternativas en los servicios web 8.3.1.1. Servicios web basados en SOAP 8.3.1.2. Servicios web basados en REST 8.3.2. Acceso a servicios web de terceros 8.3.3. Dise¿o e implantaci¢n de nuestro servicios web 8.3.3.1. Instalaci¢n del servidor de servicios web 8.3.3.2. Creaci¢n un servicio web en Eclipse 8.3.3.3. Explorando el servicio web desde Eclipse 8.3.3.4. Explorando el servicio web desde HTML 8.3.3.5. Utilizando el servicio web desde Android CAPÖTULO 9. Servicios y notificaciones 9.1. Introducci¢n a los servicios en Android 9.1.1. Ciclo de vida de un servicio. 9.1.2. Permisos 9.2. Un servicio para ejecuci¢n en segundo plano. 9.3. Las notificaciones de la barra de estado 9.3.1. Configurando tipos de avisos en las notificaciones 9.3.1.1. Asociar un sonido 9.3.1.2. A¿adiendo vibraci¢n 9.3.1.3. A¿adiendo parpadeo de LED 9.4. Un servicio como mecanismo de comunicaci¢n entre aplicaciones 9.4.1. Crear la interfaz en AIDL 9.4.2. Implementar la interfaz 9.4.3. Publicar la interfaz en un servicio 9.4.4. Llamar a una interfaz remoto CAPÖTULO 10. Gr ficos 3D con OpenGL 10.1. Introducci¢n a OpenGL 10.1.1. OpenGL ES 10.2. Estructura del c¢digo en OpenGL 10.3. Primitivas en OpenGL ES 10.4. A¿adiendo un array de colores 10.5. Representando un cubo 10.6. Transformaciones de coordenadas 10.6.1. Transformando el modelo 10.6.2. Definiendo el punto de vista 10.6.3. Manipulando las matrices de transformaci¢n 10.6.4. La proyecci¢n 10.6.5. Ejemplo: rotaci¢n usando la pantalla t ctil 10.7. Iluminaci¢n 10.7.1. Vectores normales 10.7.2. Situando las luces 10.7.3. Definiendo materiales 10.8. Aplicando texturas 10.8.1. Mapeando texturas 10.8.2. Cargando y configurando texturas 10.8.3. Cambiando los par metros de cada superficie CAPÖTULO 11. Publicar aplicaciones 11.1. Preparar y testear tu aplicaci¢n 11.1.1. Preparar la aplicaci¢n para cualquier tipo de dispositivo 11.1.2. Testear la aplicaci¢n 11.2. Crear un certificado digital y firmar la aplicaci¢n 11.3. Publicar la aplicaci¢n 11.3.1. Publicar en Internet 11.3.2. Publicar en Android Market 11.4. Asteroides: detectar victoria y derrota