ANDROIDIniciación al desarrollo de aplicaciones nativas para
sistemas operativos AndroidJavier Téllez
¿Qué es Android?
• Sistema operativo orientado a dispositivos móviles basado en Linux 2.6 (capa HW - SW, kernel)
• 51% del mercado de apps (iOS 40%)
• Lenguaje de desarrollo JAVA
• Framework propio
• Android es gratuito, libre y no requiere licencias
¿Qué es Android?
• Libertad para los programadores a la hora de acceder a las funciones del móvil
• Las apps no difieren del núcleo del teléfono, todas tienen acceso a los mismos servicios.
• Cada aplicación se ejecuta en su propio proceso y máquina virtual, Dalvik, optimizada para entornos bajos en recursos.
Herramientas de desarrollo
• Emulador Android
• Android SDK (plugin Eclipse)
• DDMS ( Dalvik Debug Monitor Service ), gestión de procesos
• ADB (Android Debug Bridge), instalador para el emulador
!
Características!
Características de Android
• La máquina virtual Dalvik: Optimizada para dispositivos móviles.
• Navegador integrado: Basado en el motor del proyecto abierto WebKit. (Safari y Chrome)
• Gráficos optimizados: Suministrados por una librería de gráficos 2D. Los gráficos 3D están basados en la especificación OpenGL ES 1.0, con soporte para aceleración gráfica por hardware.
Características de Android• SQLite: Para estructurar el almacenamiento de datos.
• Soporte multimedia: Común para audio, video, imágenes, soportando varios formatos (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
• Telefonía GSM
• Bluetooth, 3G, 4G, y WiFi (Si el hardware lo soporta).
• Cámara, GPS, brújula y acelerómetro (Si el hardware lo soporta).
• Completo entorno de desarrollo: Incluye un dispositivo emulador, herramientas de depuración, y un plugin para el IDE Eclipse
!
Arquitectura!
Arquitectura de Android• Aplicaciones: Las aplicaciones base incluyen un cliente
de email, programa de SMS, calendario, mapas, navegador, contactos, y otros. Todas las aplicaciones son escritas en el lenguaje de programación Java.
• Framework de aplicaciones: Los desarrolladores tienen acceso completo a los mismos APIs del framework usados por las aplicaciones base.
• Librerías: incluye un conjunto de librerías C/C++ usadas por varios componentes del sistema Android. (librerías de medios, librerías de gráficos, 3d, SQLite, entre otras)
Arquitectura de Android
• Núcleo - Linux: Android depende de un Linux versión 2.6 para los servicios base del sistema como seguridad, gestión de memoria, gestión de procesos, stack de red, y modelo de drivers. El núcleo también actúa como una capa de abstracción entre el hardware y el resto del stack de software.
!
Componentes de una aplicación!
Componentes• Actividades: Pantalla de la interfaz de usuario, una aplicación puede tener una o
mas actividades
• Las vistas (view) son los componentes básicos con los que se construye la interfaz gráfica de la aplicación
• Layout: Contenedores de elementos gráficos.
• Intent: se pueden entender como los mensajes o peticiones que son enviados entre los distintos componentes de una aplicación o entre distintas aplicaciones. Mediante un intent se puede mostrar una actividad desde cualquier otra, iniciar un servicio, enviar un mensaje broadcast, iniciar otra aplicación, etc.
• Servicios: Tarea que se ejecuta en segundo plano. Ej.: reproducir música en segundo plano
• Fragments: Porciones independientes con diseño y lógica para integrar en una actividad.
Componentes• Content Provider: un proveedor de contenidos
(content provider) es el mecanismo que se ha definido en Android para compartir datos entre aplicaciones.
• Broadcast Receiver: componente destinado a detectar y reaccionar ante determinados mensajes o eventos globales generados por el sistema.
• Widget: elementos visuales, normalmente interactivos, que pueden mostrarse en la pantalla principal (home screen) del dispositivo Android
!
Estructura básica de una aplicación en ANDROID!
Estructura• src: Clases java. Es decir, código.
• res: Recursos necesarios para la app
• drawable-?dpi: imágenes o ficheros XML que dibujen una imagen u objeto gráfico.
• layout: ficheros XML que dibujan la UI.
• values: ficheros XML que contienen valores estáticos: etiquetas de texto, de botones, colores, etc
Estructura
• AndroidManifest.xml: Parámetros de configuración de la aplicación como permisos, qué Activity es la principal, etc.
• Assets: recursos tipográficos, raw,…