píldora 1: android intro
DESCRIPTION
TRANSCRIPT
Android – Introducción
CatDroid – Oct. 2010(por Roberto C. Serrano)
Acerca de mi
• Roberto C. Serrano• Ex-ingeniero de Software en Motorola (Android
Platform Team)• Desarrollador de Android• Responsible desarrollo dispoitivos móviles para
Addapta Technological Services• Co-fundador de la comunida CatDroid• Info de Contacto:
– [email protected] o twitter.com/hojalataverde
En esta mini-presentación
Introducción: Introducción al sistema operativo Android
y sus peculiaridades Introducción a un Android Activity y los
Componentes de una Applicación
Introducción al sistema operativo Android y sus
peculiaridades
Demo del shell de Android
Android es casi un Linux (pero con muchas peculiaridades)
http://code.google.com/p/android-vnc/ Get fbvncserver binary Load it into the phone/emulator: adb push fbvncserver /data/local adb shell chmod 777 /data/local/fbvncserver adb forward tcp:5901 tcp:5901 Run the vnc server: adb shell /data/local/fbvncserver
Openness y Android• “Android es la primera plataforma extensiva para
electrónica movil.…”• Componentes:
– Una referencia de diseño de de hrdw que describe los requisitos mínimos para dar soporte a la plataforma.
– Linux Kernel – Librerias Open Source a– Run time environment (Dalvik)– Framework para aplicaciones– Un framework para interface de usuario – Un paqueta de aplicaciones preinstaladas (un telefono
inteligente 100% funcional)– Un kit de desarrollo (Tools, plug-ins, and documentation)
Android Applications
• Sin Licencia en la plataforma (http://android.git.kernel.org/)– SMS management app.– PIM (Google calendar, etc)– WebKit based browser– Cliente de Mail POP3– Instant Messaging Client (GChat)– Music Player and Picture viewer
• Con Licencia:– Android Market Place – App. Google Maps y navegación– Cliente eMail(GMail)
• Etc.
Carácter. del Android SDK y Plataforma
• Open platform (no fees, no licensing)• Wi-fi hrdw. acess• Full comm. stack (GSM, EDGE, 3G, Bluetooth)• GPS• Multimedia (playback and recording of audio, video, etc)• APIs to accel. And compass hrdwr.• IPC messaging• Share Data stores• Web-Kit browser• Eventually hwrd. accel. 3D graphics (Open GL ES)• Media Libraries (Licensed for MP3, etc…)• And open Application Framework (reuse and replacement)
Funcionalidad disponible• Sistema Agnóstico al Hardware (via el Kernel)• Background services• SQLite DB• Comunicación entre applicaciones • Incluye Soporte multimedia • Sistema de optimización de Mem. y gestión de Procesos• Busqueda rápida desde 1.6• Sintetizador de voz desde 1.6• Gestión Transparente o intencionada de de múltiples resoluciones desde 1.6• API de Blutooth desde 2.0• Gestión centralizada de contactos desde 2.0• Live WallPapers desde 2.0• Reconocimiento de voz desde 2.1• navegación desde 2.1• Mensajes de la Nube al teléfono (Push) desde 2.2• Apps instalables en memoria externa (SD) desde 2.2
El pastel de Android
HA
LC
OR
E A
ND
RO
ID +
LIB
RA
RIE
S
HAL
Multimedia / Graphics
TCMD
MBM / Boot loader
CONNECTIVITYUSB
BLUETOOTHWi-Fi
CONNECTIVITYMODEM + RIL
KER
NEL+
BS
P
GPS
Q&A
La Activity en Android
Activities y Tasks
• Definición de Dan Morrill’s: – Una Actividad es como una molécula, un
trozo cuantificable de funcionalidad.– Una tarea es una collección de actividades
(parte una o multiples aplicaciones)– Un proceso en Android es un “proceso”
estandard de Linux
Activities y Tasks (cont.)
Por defecto cada aplicación de Android vive en su mundo:Cada Applicación se ejecuta en su propio proceso por defectoCada proceso se ejecuta dentro de su propia máquina virtualCada aplicación recive su Linux User ID
Activities (continue)
Activities (continue)
Actividad frente a Tarea (apps)
• Una clase concreta en el API
• Encapsula una operación particular
• Se ejecuta en el Proceso del .APK que las instaló
• Opcionalmente asociadas con su ventana (UI)
• Es el contexto de ejecución del APK
• Es más una noción que una parte del API
• Collección de Actividades relaccionas
• Capaz de extenderse a múltiples APKs y procesos
• Asociado con su propio “history stack”
• Son lo que los usuarios de otras plataformas entiende como “aplicaciones”
Process(a) esto...
• En que se parece un Android y un Linux?– Android process == Linux process (con su
unico UID)– Por defecto, 1 proceso por APK– Por defecto, 1 hilo (thread) por proceso– La mayoría de los componente conectan
eventos via el hilo principal.
Componentes de una App. en Android
Content Providers: Una abstracción provista para representar cualquier información (data) almacenada en el aparato y a la que necesitan acceso múltiples aplicaciones.
Services: Unidad de ejecución provista para que sobreviva más allá de una actividad. Pueden ser ejecutados como parte o independientemente de una actividad.
Intents: Mortero que una el resto de los componentes. Mensajes de sistema que transmiten eventos representado cambios de estado en el hardware, acciones, etc.
Broadcast Receivers: Los consumidores de los Intents. Registrando tu app. como un broadcast reciever le estas dando a la aplicación la habilidad de consumir Intents que coinciden con un criterio de filtrado específico.
Notifications: El framework de notificación a usuarios permite que un Servicio o aplicación comunique con el usuario sin interrumpir su flujo de trabajo.
Otros Componentes Elementos Gráficos: Menus, Dialogs, ListViewss, Buttons, Widgets, etc. Persistent Storage: Sistema de almacenamiento simplificado útil para
persistir información de una sesión a otra (usado principalmente para almacenar preferencias).
Async Tasks: Además de el método tradicional de java para crear hilos, Android provee de esta clase útil para envolver tareas pesadas para que no interfieran con la experiencia del usuario.
WebViewClient: Estructura disponible para que una aplicación pueda mostrar contenido Web (basado en WebKit).
PreferenceActivity: Permite la creación de Actividades de Ajustes (settings) y persistencia de los datos de manera simplificada.
HTTPClient: Estructura provista para la adquisición de datos desde un servidor web (útil para extrar objetos json o xml).
MapView Activity: Estructura que permite hacer uso de la infraestructura de Google Maps desde una aplicación.
etc..
Otros elementos a tu disposición (lista no exhaustiva)
Storage: Puedes empaqueta ficheros de datos, para elementos estáticos, como iconos, cadenas de texto, arrays, etc. Se puede obtener espacio en la base de datos (SQLite) y en la memoria principal, o si el usuario provee de tarjeta SD, también se puede usar para almacenar todo ello para almacenar elementos generados de manera dinámica (o descargados de internet).
Network: Desde Java Sockets (via NIO) a pantallas que contengan un navegador, Android provee de un montón de mecanismos para aprovechar la accesibilidad a Internet.
Multimedia: Desde la lógica de una aplicación se puede incluir la reproducción y grabación de Audio y vídeo así como la de captura de imágenes (fotos).
GPS: Aparatos estandarizados de Android tienen la habilidad de reportar la ubicación (con diferentes niveles de granularidad). Además usando google maps, se pueden mostrar mapas, etc.
Phone Services: Una aplicación de android puede hacer uso de los servicios de telefonía, permitiendo el iniciar llamadas, enviar SMS, etc.
Q&A