Este documento presenta una introducción a Android para desarrolladores Java. Explica que Android es un sistema operativo basado en Linux optimizado para dispositivos móviles que usa Java para aplicaciones nativas. Detalla la historia, arquitectura y conceptos clave de Android como activities, intents y services. También compara Android con Java y discute las herramientas y el proceso de desarrollo en Android.
41. Se puede acceder a los elementos de forma similar a como se hace en Javascript en el DOM (Función Activiy.findViewById(int) ). UI Framework Código UI
Presentación breve. Vista general de Android. No pretende ser un curso de programación en Android.
Apuntar que hay más dispositivos con Android (electrodomésticos, coches, netbooks, …). Dalvik optimizado para dispositivos con poca memoria. Dalvik no es exactamente una JVM porque no ejecuta Java bytecode. Pasa los .class a .dex
Apuntar que hay más dispositivos con Android (electrodomésticos, coches, netbooks, …). Dalvik optimizado para dispositivos con poca memoria. Dalvik no es exactamente una JVM porque no ejecuta Java bytecode. Pasa los .class a .dex
Destacar que en la Open Handset Alliance hay todo tipo de companías: hardware, software, telecomunicaciones, …
Kernel de Linux modificado, con optimizaciones y muchos drivers. Se supone que el desarrollo del kernel de Linux clásico y de Android terminarán convergiendo. Por debajo de las APIs que vamos a usar, se encuentran las librerías del core, muchas adicionales y Dalvik. Por encima las librerías con las que trabajaremos al programar una aplicación para Android. Las aplicaciones Android se apoyan sobre esta arquitectura igual que las que hagamos nosotros.
Java es el lenguaje más usado según varios estudios. Al contrario que en iOS, que sólo se puede con Mac. Ya hemos visto las APIs que ofrece. Ya veremos lo de los XML, emuladores y la integración. En general, Android ofrece un ecosistema de desarrollo bastante abierto (multiplataforma)y familiar para el desarrollador (Java, Eclipse, …).
Pasar rápido.
Destacar que RMI no está. La conectividad entre aplicaciones y/o servicios está planteada de otra forma, como se verá más adelante. Destacar también que no está ni AWT ni SWING. Nuevo framework para interfaces.
Bluez = Bluetooth Codecs multimedia. Añadir en el core características de uso común en dispositivos móviles. Importancia de la comunicación por servicios web con HttpClient (permite lanzar peticiones HTTP y obtener sus resultados) y el parser de JSON (formato muy usado en este tipo de comunicación).
Como dijimos antes, aparte de las librerías core, se añaden más librerías muy usadas en la programación de apps móviles. SQLite: Bases de datos en un fichero. Varias de red y además el motor de renderizado WebKit (usado por Chrome, Safari, …). Varias librerias de multimedia. Destacan las que nos permiten interactuar con las cámaras. Casi todos los dispositivos Android cuentan con GPS. Obviamente, librerías para interactuar con el teléfono.
Nuevos conceptos que introduce Android: Activities vienen a ser las ventanas en Android. Intents son básicos, ya que permiten ”abrir” una Activity desde otra. Muy flexibles y ofrecen muchas posibilidades. Es una interfaz de acceso a datos que ofrece una aplicación Android. Android lo usa en sus aplicaciones por defecto (obtener contactos, SMSs, historial de llamadas, …). No todo son Activities. Son muy importantes los Services (clientes de correo, Twitter, …).
Framework para hacer interfaces totalmente nuevo. Se definen las interfaces en un XML, tanto los componentes, como la distribución de estos (mediante Layouts, un poco al estilo de Swing). Forma de acceder a los componentes sencilla y limpia. Inspirado en JavaScript.
Se puede programar sólo con un editor de texto plano y una consola. Eclipse es la mejor opción: Integración perfecta en un IDE muy usado. NetBeans un paso por detrás. Para la preparación de esta charla no fui capaz de echarlo a andar. ”Nuevos” IDEs con características interesantes, como un builder para interfaces. Soporte en otros IDEs. Otros experimentos: AppInventor, una aplicación que te permite crear apps en Android visualmente. Escribes el código 1 vez en JavaScript y puedes obtener aplicaciones nativas para iOS, Android y Blackberry. Fuerte crecimiento, IDE propio en camino (basado en Aptana).
Emulador multiplataforma (viene con el SDK). No hace falta tener un Android para probar las aplicaciones. Permite configurar distintas versiones de la API, distintas características de nuestro dispositivo (p.e. con o sin GPS, tamaños de pantalla, …). Lo veremos más adelante.
Mostrar Eclipse, los emuladores, la estructura de carpetas, … Enseñar la aplicación Now. Enseñar ForvoDroid, especialmente la parte de la comunicación con la API REST de Forvo.
Mostrar Eclipse, los emuladores, la estructura de carpetas, … Enseñar la aplicación Now. Enseñar ForvoDroid, especialmente la parte de la comunicación con la API REST de Forvo.
Próximas versiónes tienen como objetivo mejorar la multitarea y solucionar la fragmentación que han provocado los fabricantes y compañías de telecomunicaciones. Android 3 ya en el mercado. Exclusivo para tablets, aunque hay gente que ha conseguido adaptarlo a teléfonos móviles. Comunicar dispositivos Android con hardware programado con una variante de Arduino. Controlar tu casa desde Android con electrodomésticos preparados para ello.
Documentación oficial de Android. Foro de programación. Libro de iniciación muy bueno. Contunuación del anterior. Muy famoso el último.