Programación en Android
Desarrollo de Aplicaciones para Dispositivos
Móviles
CUL 2018
Contenido Programático
Unidad 1. Visión general y entorno de desarrollo
Unidad 2. Diseño de la interfaz de usuario: Vistas y Layouts
Unidad 3. Actividades e intenciones
Unidad 4. Gráficos en Android
Unidad 5. Entradas en Android: teclado, pantalla táctil y
sensores
Unidad 6. Multimedia y Ciclo de Vida
Unidad 7. Seguridad y posicionamiento
Unidad 8. Servicios, notificaciones y receptores de anuncios
Unidad 9. Almacenamiento de datos
Unidad 10. Internet: sockets, HTTP y servicios web
Introducción
Los dispositivos móviles han cambiado la sociedad
actual de una forma tan significativa como lo ha
hecho Internet.
Los nuevos terminales ofrecen unas capacidades
similares a un ordenador personal, lo que permite
que puedan ser utilizados para leer nuestro correo
o navegar por Internet.
La diferencia entre un pc y un dispositivo móvil es
que siempre está en el bolsillo del usuario. Esto
permite un nuevo abanico de aplicaciones mucho
más cercanas al usuario.
Introducción
¿Qué es un dispositivo móvil?
Los dispositivos móviles son aparatos de
pequeño tamaño, con algunas capacidades de
procesamiento, con conexión permanente o
intermitente a una red, con memoria limitada,
diseñados específicamente para una función,
pero que pueden llevar a cabo otras funciones
más generales..
Introducción
¿Qué es Android?
-Sistema operativo para teléfonos móviles(Inicial).
-Permite programar aplicaciones en una variación
de Java llamada Dalvik (ART Version 5.0).
-Proporciona todas las interfaces necesarias para
desarrollar aplicaciones que accedan a las
funciones del teléfono (como el GPS, las
llamadas, la agenda, etc.) de una forma muy
sencilla en un lenguaje de programación muy
conocido como es Java.
Introducción
¿Orígenes?
Google adquiere Android Inc. en el año 2005.
Se trataba de una pequeña compañía, que
acababa de ser creada, orientada a la
producción de aplicaciones para terminales
móviles. Ese mismo año empiezan a trabajar
en la creación de una máquina virtual Java
optimizada para móviles (Dalvik VM).
Introducción
¿Qué lo hace diferente?
Lo que lo hace diferente es que está basado
en Linux, un núcleo de sistema operativo
libre, gratuito y multiplataforma.
Introducción
Introducción
Introducción
Introducción
Introducción
Introducción
¿Comparativa Plataformas?
En la siguiente gráfica podemos ver un estudio
realizado por la empresa Gartner Group, donde
se muestra la evolución del mercado de los
sistemas operativos para móviles según el
número de terminales vendidos.
Introducción
Introducción
Introducción
Introducción
Introducción
¿Qué lo hace especial?
Existen muchas plataformas para móviles
(iOS, Symbian, Windows Phone, BlackBerry,
Palm, Java Mobile Edition, Linux Mobile
(LiMo), Firefox OS, etc.); sin embargo Android
presenta una serie de características que lo
hacen diferente: Es el primero que combina
en una misma solución las siguientes
cualidades:
Introducción
• Plataforma realmente abierta.
• Adaptable a cualquier tipo de hardware.
• Portabilidad asegurada.
• Arquitectura basada en componentes
inspirados en Internet.
• Gran cantidad de servicios incorporados.
• Aceptable nivel de seguridad.
• Optimizado para baja potencia y poca
memoria.
• Alta calidad de gráficos y sonido.
Introducción
• Plataforma realmente abierta.
Es una plataforma de desarrollo libre basada en
Linux y de código abierto.
• Adaptable a cualquier tipo de hardware.
Android no ha sido diseñado exclusivamente
para su uso en teléfonos y tabletas; relojes,
cámaras, electrodomésticos y gran variedad de
sistemas empotrados se basan en este sistema
operativo.
Introducción
• Portabilidad asegurada.
Las aplicaciones finales son desarrolladas en
Java lo que nos asegura que podrán ser
ejecutadas en cualquier tipo de CPU, tanto
presente como futuro. Esto se consigue gracias
al concepto de máquina virtual.
• Arquitectura basada en componentes
inspirados en Internet.
Por ejemplo, el diseño de la interfaz de usuario
se hace en xml, lo que permite que una misma
aplicación se ejecute en un móvil de pantalla
reducida o en un TV.
Introducción
• Gran cantidad de servicios incorporados.
por ejemplo, localización basada tanto en GPS
como en redes, bases de datos con SQL,
reconocimiento y síntesis de voz, navegador,
multimedia.
• Aceptable nivel de seguridad.
Los programas se encuentran aislados unos de
otros gracias al concepto de ejecución dentro de
una caja que hereda de Linux.
Introducción
• Optimizado para baja potencia y poca
memoria.
Por ejemplo, Android utiliza la Máquina Virtual
Dalvik. Se trata de una implementación de
Google de la máquina virtual de Java
optimizada para dispositivos móviles.
• Alta calidad de gráficos y sonido.
Gráficos vectoriales suavizados, animaciones
inspiradas en Flash, gráficos en 3 dimensiones
basados en OpenGL. Incorpora codecs
estándar más comunes de audio y vídeo,
incluyendo H.264 (AVC), MP3, AAC, etc.
¿Comparación de Plataformas?
Introducción
¿Qué versiones existen?
Android tiene tres tipos de denominar a las
versiones de Android:
• La comercial con el nombre de postre. Por
ejemplo: KitKat
• La de los fabricantes (y también comercial)
con la versión y subversión. Por ejemplo: 4.4
• La de desarrollador con el nivel del API (ésta
nos interesa mucho para desarrollar en
Android): Por ejemplo: 19
Arquitectura
Arquitectura
El núcleo Linux
El núcleo de Android está formado por el
sistema operativo Linux versión 2.6. Esta capa
proporciona servicios como la seguridad, el
manejo de la memoria, el multiproceso, la pila
de protocolos y el soporte de drivers para
dispositivos.
Arquitectura
Runtimede Android
Está basado en el concepto de máquina virtual
utilizado en Java. Por las limitaciones de los
dispositivos se crea una nueva, la máquina
virtual Dalvik, como característica principal el
formato optimizado para ahorrar memoria.
A partir de Android 5.0 se reemplaza Dalvik por
ART. Consigue reducir el tiempo de ejecución
del código Java hasta en un 33%.
También se incluye en el Runtine de Android el
“core libraries” con la mayoría de las librerías
disponibles en el lenguaje Java.
Arquitectura
Librerías nativas
Incluye un conjunto de librerías en C/C++
usadas en varios componentes de Android.
Están compiladas en código nativo del
procesador. Muchas de las librerías utilizan
proyectos de código abierto.
Arquitectura
Entorno de aplicación
Proporciona una plataforma de desarrollo libre
para aplicaciones con gran riqueza e
innovaciones (sensores, localización, servicios,
barra de notificaciones, etc.).
Los servicios más importantes que incluye son:
•Views: extenso conjunto de vistas, (parte visual de los
componentes).
•Resource Manager: proporciona acceso a recursos que no son en
código.
•Activity Manager: maneja el ciclo de vida de las aplicaciones y
proporciona un sistema de navegación entre ellas.
•Notification Manager: permite a las aplicaciones mostrar alertas
personalizadas en la barra de estado.
•Content Providers: mecanismo sencillo para acceder a datos de
otras aplicaciones (como los contactos).
Arquitectura
Aplicaciones
Este nivel está formado por el conjunto de
aplicaciones instaladas en una máquina
Android. Todas las aplicaciones han de correr
en la máquina virtual Dalvik para garantizar la
seguridad del sistema.
Normalmente las aplicaciones Android están
escritas en Java. Para desarrollar aplicaciones
en Java podemos utilizar el Android SDK o
Eclipse. Existe otra opción consistente en
desarrollar las aplicaciones utilizando C/C++.
Para esta opción podemos utilizar el Android
NDK (Native Development Kit).
Componentes Aplicación
Componentes Aplicación
Activity: Son componentes de la interfaz que
corresponde a una pantalla. Una aplicación
para una lista de cosas por hacer puede tener
una actividad para ingresar las cosas por
hacer y otra actividad para mostrar el listado,
en conjunto estas actividades conforman la
aplicación.
Componentes Aplicación
son mensajes que provocan notificaciones o
cambios de estatus, que al ser recibidos por
actividades o servicios pueden levantar
procesos. De esta forma se unen
componentes dentro de la misma aplicación o
de diferentes aplicaciones.
Componentes Aplicación
son los componentes de la interfaz de
usuario, diferentes vistas pueden agruparse a
través de grupos logrando una jerarquía, esto
se logra a través de la disposición de los
componentes a través de un archivo XML.
Componentes Aplicación
son componentes que ejecutan operaciones
en segundo plano y no tienen una interfaz de
usuario. Por ejemplo, al escuchar música, hay
un servicio encargado de la reproducción que
se ejecuta de fondo y la aplicación que
manipulamos le manda mensajes a este
servicio diciéndole que se detenga, pause o
reproduzca la siguiente canción.
Componentes Aplicación
Representan la abstracción para almacenar y
obtener datos permanentes y aplicaciones
diferentes. El sistema incluye algunos
proveedores de contenido útiles (audio, video,
etc) y además pueden desarrollarse nuevos.
Componentes Aplicación
Son componentes que responden a avisos y
anuncios de difusión (broadcast). Estos avisos
provienen del sistema (batería baja, una
llamada entrante, etc.) y de aplicaciones
(pasando avisos de una aplicación a otra). Aun
que no muestran una interfaz de usuario
algunas veces utilizan barras de progreso para
mostrar avances. Estos se activan a través de
mensajes asincrónicos llamados intents
(mencionados arriba).
Componentes Aplicación
El archivo [Link] es donde se
configura la aplicación, se agregan
actividades, se asignan permisos, etc.
Describe los componentes de la aplicación.
Entorno de Programación
Android SDK, Android Studio y el JDK
En cuanto a la herramienta para la edición y
construcción, Google ha recomendado un
nuevo IDE llamado Android Studio, para que no
trabajemos directamente en consola. Además
integra a Gradle para simplificar la construcción
de nuestras aplicaciones.
Descarga Android Studio
[Link]
Descarga JDK
[Link] jdk8-
[Link]?ssSourceSiteId=otnes
Entorno Programación
SDK
Sistema Publicación
Aplicación Android
Estructura .APK (ZIP) se compone de los siguientes
archivos:
• [Link]
– Dalvik
– Magic: dex\nXXX\0
– Empaquetado de los .java compilados
• res (recursos)
• META-INF (firmas de la aplicacion)
• [Link] (compilado)
• [Link] (relaciona los nombres de los recursos con sus
identificadores - [Link]-)