seminario android
TRANSCRIPT
Android
Daniel Guzmán
Fran Carpio
Í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
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
Android
2. Arquitectura del sistema
Android
• 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
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.
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.
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
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) …
Android
2. Arquitectura del sistema
Android
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
3. Arquitectura de las aplicaciones
Android
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)
3. Arquitectura de las aplicaciones
• En Android, las interfaces se construyen
utilizando los objetos View y ViewGroup
• Las Views son el punto de interacción con
el usuario (setContentView() en Activity)
Android
• Widget: Son Views preconstruidas que
vienen incluidas en la plataforma Android.
• Están en el paquete: android.widget
4. Interfaces de usuario
Interfaces
Layout
Notifications
Compound
components
Menus
• Son casi 50 clases y 30 interfaces
• Button, TextView, EditText, ListView, CheckBox,
RadioButton, Gallery, Spinner …
• AutoCompleteTextView, ImageSwitcher & TextSwitcher
Android
Interfaces
Layout
Notifications
Compound
components
Menus
• Su objetivo es controlar la posición de las Views hijas
en la pantalla.
• Tipos:
• FrameLayout: el más simple: añade cada View hija en la
esquina superior izquierda.
• LinearLayout: añade cada View hija en línea recta
horizontal o vertical.
• RelativeLayout: añade las Views unas en relación a otras.
• AbsoluteLayout: añade las vistas dando coordenadas
absolutas.
4. Interfaces de usuario
Android
Interfaces
Layout
Notifications
Compound
components
Menus
Una vez añadido View/ Widget a nuestro UI, necesitamos
conocer como interaccionar o notificar al usuario.
Ej.: Batería baja, confirmación de recepción de un archivo,
barras de progreso, etc.
Se requiere una manera concreta de información: vibración,
iluminación LEDs
Toast: para breves mensajes desde el background
Status Bar: para recordatorios persistentes que requieren del
usuario
Dialog: para notificaciones relacionadas con la Activity.
4. Interfaces de usuario
Android
Interfaces
Layout
Notifications
Compound
components
Menus
Hacen referencia a Views con funcionalidad compleja añadida.
Para crear componentes compuestos, se pueden crear views y
añadirle métodos para la gestión de eventos.
TextView ListView Spinner
EditText con un Button
4. Interfaces de usuario
Android
Interfaces
Layout
Notifications
Compound
components
Menus
DatePicker TimePicker AutoComplete
4. Interfaces de usuario
Android
• Proporcionan interfaces amigables que muestran la
funcionalidad de nuestra App.
• Android facilita la creación de estos menús
estandarizándolos.
• También se pueden crear a través de XML
• En /res directorio /menu
• .xml con <menu> & <item>
• Tres tipos de menús de aplicación
Interfaces
Layout
Notifications
Compound
components
Menus
Option Menu
Context
Menu
Submenu
• Options Menu: Contiene un
máximo de 6 elementos con
iconos. El único que no soporta
checkbox ni radio-buttons.
4. Interfaces de usuario
Android
• Context Menu
• Conceptualmente similar al botón derecho del ratón.
• Presión sobre la vista unos dos segundos.
• Al aparecer, se invocará el método
onCreatContextMenu()
• Al seleccionar, se invocará el método
onContextItemSelected()
• Para asociar una View a este menú
• registerForContextMenu (View view)
Interfaces
Layout
Notifications
Compound
components
Menus
Option Menu
Context
Menu
Submenu
4. Interfaces de usuario
Android
• Submenús
• Se puede añadir dentro de cualquier menú,
excepto en otro submenú.
• Ideal para categorizar funcionalidades de nuestra
App.
• Igual que en los option Menu, al pulsar se
invocará el método onOptionsItemSelected()
Interfaces
Layout
Notifications
Compound
components
Menus
Option Menu
Context
Menu
Submenu
4. Interfaces de usuario
• En android los ficheros, base de datos
son privados por aplicación, pero
pueden acceder todas las clases de
ésta.
• Para compartir información, se utilizan
los Content Providers
Android
5. Almacenamiento de datos
• 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.
Storage
Preferences
Local Files
Database
• 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
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.
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
cada operación) Sincronización activada100%
Envuelta en operaciones No hay operaciones– cada insert/ update/delete se
hace por separado.
Usa tabla no-normalizada Tablas normalizadas.
Utiliza la cache interna de las consultas. Las declaraciones preparadas se lanzan después
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,
no usa páginas. Tamaño de caché y páginas pequeña.
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.
Android
5. Almacenamiento de datos
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
Android
6. Primera aplicación
• Android Aplication Project
• Aplication Name
Android
6. Primera aplicación
• Blank activity
Android
6. Primera aplicación
• 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/
Android
7. Referéncias