2. Android
Índice
1. ¿Qué es android?
2. Arquitectura del sistema
3. Arquitectura de las aplicaciones
4. Interfaces de usuario
5. Almacenamiento de datos
6. Primera aplicación
7. Referéncias
3. Android
1. ¿Qué es android?
• Conjunto de software que incluye S.O., middleware y
aplicaciones.
• SDK: soporte y API para el desarrollo de aplicaciones para
Android
• Características:
o Navegador integrado basado en WebKit
o Gráficos optimizados con OpenGL ES 2.0
o SQLite, para almacenamiento de datos estructurados
o Soporte multimedia: WebM, H.263, H.264, MPEG-4,
AAC, MP3, JPEG, PNG…
o Conectividad: GSM/EDGE, CDMA, UMTS, Bluetooth, WiFi, LTE, HSDPA,
HSPA+ y WiMAX…
o Soporte para cámaras de fotos, de vídeo, pantallas táctiles, GPS,
acelerómetros, giroscopios, magnetómetros, sensores de proximidad y de
presión, sensores de luz, gamepad, termómetro, aceleración por GPU 2D y
3D.
o Entornos de desarrollo: emulador, dispositivo real
5. Android
2. Arquitectura del sistema
• Versión 3.x del Kernel de Linux
• El kernel es el encargado de:
• La seguridad
• Gestión de memoria
• Gestión de procesos
• Red
• Drivers
• Núcleo actua como capa de abstracción entre el hardware y
el software
6. Android
2. Arquitectura del sistema
Conjunto de librerías escritas en C o C++ y compliladas para la
arquitectura de hardware específica del teléfono.
• Hechas por el fabricante, quien también se encarga de instalarlas en el
dispositivo antes de ponerlo a la venta.
• OpenGL (motor gráfico), Bibliotecas multimedia (formatos de audio, imagen
y video), Webkit (navegador), SSL (cifrado de comunicaciones), FreeType
(fuentes de texto), SQLite (base de datos), entre otras.
7. Android
2. Arquitectura del sistema
• Core Libraries: Aquí encontramos las librerías con la funcionalidades
habituales de Java así como otras específicas de Android.
• Máquina virtual Dalvik: Las aplicaciones se codifican en Java y son
compiladas en un formato específico para que esta máquina virtual las
ejecute.
• Dalvik es una variación de la máquina virtual de Java, por lo que no es
compatible con el bytecode Java.
• Java se usa como lenguaje de programación.
• SDK de Android genera .dex que es específico para Dalvik, y por ello no
podemos correr aplicaciones Java en Android ni viceversa.
8. Android
2. Arquitectura del sistema
• El Framework de aplicaciones está formado por todas las
clases y servicios que utilizan directamente las aplicaciones
para realizar sus funciones.
• Los componentes de esta capa son librerías Java que
acceden a los recursos de las capas anteriores a través de la
máquina virtual Dalvik
9. Android
2. Arquitectura del sistema
• En esta capa se ubicaran las aplicaciones “preinstaladas”
y las aplicaciones del desarrollador.
• Aplicaciones escritas en lenguaje JAVA
• Aplicaciones incluidas por defecto:
• Cliente email
• Gestor SMS
• Navegador
• Contactos
• Google Play (Anterior Android Market) …
10. Android
3. Arquitectura de las aplicaciones
Activity: Pantalla o ventana que
contiene la interfaz de usuario
de la aplicación.
• Activa (En pantalla): Está
en el top de la pila.
• Pausada: visible pero sin el
foco (hay otra activa).
• Parada: No visible por el
usuario, el sistema la puede
eliminar en caso de pocos
recursos.
Cada cambio de estado se
deberá notificar a través de los
métodos de la actividad
11. Android
3. Arquitectura de las aplicaciones
Métodos de la activity:
• void onCreate(): llamada al crearse
• void onStart(): actividad pasa a ser visible al usuario
• void onRestart(): llamada cuando la actividad ha sido
parada y se reinicia de nuevo
• void onResume(): actividad proviene de estar parcialmente
escondida a estar al frente
• void onPause(): llamada cuando la actividad va a ser
pausada y otra activity previa será reanudada
• void onStop(): actividad deja de ser visible para el usuario
• void onDestroy(): llamado al cerrar la actividad
(manualmente o por el sistema para conseguir memória)
12. Android
4. Interfaces de usuario
Interfaces • En Android, las interfaces se construyen
utilizando los objetos View y ViewGroup
Layout
Notifications
• Las Views son el punto de interacción con
el usuario (setContentView() en Activity)
Compound
components
• Widget: Son Views preconstruidas que
Menus vienen incluidas en la plataforma Android.
• Están en el paquete: android.widget
• Son casi 50 clases y 30 interfaces
• Button, TextView, EditText, ListView, CheckBox,
RadioButton, Gallery, Spinner …
• AutoCompleteTextView, ImageSwitcher & TextSwitcher
13. Android
4. Interfaces de usuario
Interfaces
• Su objetivo es controlar la posición de las Views hijas
en la pantalla.
Layout • Tipos:
• FrameLayout: el más simple: añade cada View hija en la
Notifications esquina superior izquierda.
Compound • LinearLayout: añade cada View hija en línea recta
components horizontal o vertical.
Menus • RelativeLayout: añade las Views unas en relación a otras.
• AbsoluteLayout: añade las vistas dando coordenadas
absolutas.
14. Android
4. Interfaces de usuario
Una vez añadido View/ Widget a nuestro UI, necesitamos
Interfaces
conocer como interaccionar o notificar al usuario.
Ej.: Batería baja, confirmación de recepción de un archivo,
Layout
barras de progreso, etc.
Notifications Se requiere una manera concreta de información: vibración,
iluminación LEDs
Compound
Toast: para breves mensajes desde el background
components
Status Bar: para recordatorios persistentes que requieren del
Menus usuario
Dialog: para notificaciones relacionadas con la Activity.
15. Android
4. Interfaces de usuario
Hacen referencia a Views con funcionalidad compleja añadida.
Interfaces
Para crear componentes compuestos, se pueden crear views y
añadirle métodos para la gestión de eventos.
Layout
Notifications TextView ListView Spinner
Compound
components
Menus
EditText con un Button
17. Android
4. Interfaces de usuario
Interfaces
• Proporcionan interfaces amigables que muestran la
funcionalidad de nuestra App.
Layout • Android facilita la creación de estos menús
estandarizándolos.
Notifications • También se pueden crear a través de XML
• En /res directorio /menu
Compound
components • .xml con <menu> & <item>
• Tres tipos de menús de aplicación
Menus
• Options Menu: Contiene un
Option Menu máximo de 6 elementos con
Context iconos. El único que no soporta
Menu checkbox ni radio-buttons.
Submenu
18. Android
4. Interfaces de usuario
Interfaces • Context Menu
• Conceptualmente similar al botón derecho del ratón.
Layout • Presión sobre la vista unos dos segundos.
• Al aparecer, se invocará el método
Notifications
onCreatContextMenu()
Compound • Al seleccionar, se invocará el método
components onContextItemSelected()
Menus • Para asociar una View a este menú
• registerForContextMenu (View view)
Option Menu
Context
Menu
Submenu
19. Android
4. Interfaces de usuario
Interfaces • Submenús
• Se puede añadir dentro de cualquier menú,
Layout excepto en otro submenú.
• Ideal para categorizar funcionalidades de nuestra
Notifications
App.
Compound • Igual que en los option Menu, al pulsar se
components
invocará el método onOptionsItemSelected()
Menus
Option Menu
Context
Menu
Submenu
20. Android
5. Almacenamiento de datos
Storage • En android los ficheros, base de datos
son privados por aplicación, pero
pueden acceder todas las clases de
Preferences
ésta.
Local Files
• Para compartir información, se utilizan
Database
los Content Providers
• Preferences: técnica ágil para guardar datos simples, los
datos se almacenan en pares key /values – generalmente
usado para guardar preferencias (fuentes, colores)
• Para acceder a los ficheros locales se debe crear inputs y
outputs streams.
21. Android
5. Almacenamiento de datos
• Las bases de datos se almacenan en la carpeta
• /data/data/nombre_package/databases
• Las aplicaciones normalmente usan bases de datos para
almacenar sus datos, por lo general se usan dos tipos de
implementaciones:
• SQLite
• DB4o
22. Android
5. Almacenamiento de datos
SQLite
• Es un motor de base de datos ligero en un modelo relacional. SQLite es
rápido y tiene un tamaño reducido por lo que es perfecto para los
dispositivos Android.
• En lugar de las bases de datos pesadas basadas en un servidor, como
Oracle y Microsoft SQL Server, cada base de datos SQLite se almacena
en único archivo en el disco.
DB4o
• Es una base de datos de objeto, por lo que no hay asignación de tablas en
un modelo relacional. Puede conservar los objetos complejos con
colecciones animadas u otros objetos complejos, cualquier nivel de
complejidad en tu jerarquía.
• No esta limitado a objetos planos con tipos primitivos para obtener un
rendimiento razonable.
23. Android
5. Almacenamiento de datos
¿DB4o 500 veces más rápido que SQLite? (benchmarking )
• Sobre 30000 objetos y 100 iteraciones db4o tomo 1.3 segundos frente los 710
segundos de SQLite
DB4o SQLite
Sincronización desactivada (No actúa en
Sincronización activada100%
cada operación)
No hay operaciones– cada insert/ update/delete se
Envuelta en operaciones
hace por separado.
Usa tabla no-normalizada Tablas normalizadas.
Las declaraciones preparadas se lanzan después
Utiliza la cache interna de las consultas.
de cada ciclo.
Utiliza un comando para cada paso Instrucciones ejecutadas una a una.
Usa el contador de caché rápido Recuento de objetos en cada ciclo
Todo lo mantiene en la memoria cache,
Tamaño de caché y páginas pequeña.
no usa páginas.
24. Android
5. Almacenamiento de datos
Como usar db4o en Android
1. Crear una clase central (ej.: Db4oHelper) que maneja la API de db4o
y controla cuándo crear, abrir y cerrar la base de datos.
2. Crear un Proveedor para cada una de las clases en las que podemos
poner en práctica las consultas asociadas. Se puede hacer que se
extienda de Db4oHelper para obtener todos los métodos de
mantenimiento (abrir, cerrar, etc.)
3. Es importante cerrar la base de datos antes de salir de la App. De lo
contrario los cambios no se realizaran. Una buena manera de
implementar en Android es en la actividad Launcher (main activity),
donde vamos a crear una instancia de Db4oHelper e invocar close()
al salir.
25. Android
6. Primera aplicación
Requisitos para el desarrollo de la aplicación:
• Eclipse
http://www.eclipse.org/downloads/
• Android SDK
http://developer.android.com/sdk/index.html
• Android ADT Plugin
http://developer.android.com/sdk/installing/installing-adt.html
28. Android
7. Referéncias
• Android Developers
o http://developer.android.com/training/basics/firstapp/index.html
• Android SDK
o http://developer.android.com/sdk/index.html
• Android
o http://es.wikipedia.org/wiki/Android
o http://androideity.com/2011/07/04/arquitectura-de-android/