2. Diseño de la interfaz de usuario
Existen dos formas de implementar la interfaz:
Procedural: como tradicionalmente se han
implementado las interfaces en Java → estilo
AWT, SWING, etc.
Declarativa: usando el lenguaje de marcas
XML.
4. Servicios basados en localización
Localización: ofrece la clase LocationManager
para acceder a los sistemas de localización.
Acelerómetro y brújula: se gestiona con el
SensorManager y requiere el uso de listeners.
Para la carga se usa la función:
getSystemService(nombre_del_servicio)
Tres sistemas intregados:
5. Cámara - Configuración
Podemos manipular la configuración:
Frecuencia de previsualización:
(setPreviewFrameRate)
Tamaño: (setPictureSize)
Codificación de la imagen: (setPictureFormat)
Etc.
Camera.Parameters parameters = camera.getParameters();
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
Ejemplo:
6. Cámara - Captura
private void takePicture() {
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
shutterCallBack: se lanza justo cuando se cierra el
disparador de la cámara.
rawCallBack: recibe la imagen sin codificar tras haber
sido tomada.
jpegCallBack: recibe la imagen en formato JPEG.
7. Servicios Android
Se ejecutan en segundo plano.
El usuario no interactúa con los servicios, sino
que son manejados por las aplicaciones.
Realizan tareas como actualizar Content-
Providers o manejar notificaciones.
Por ejemplo se programan como servicio las
actualizaciones automáticas para los
programas.
8. Gestión de un servicio.
Creación: Sobrecargamos los siguientes
métodos de la clase services:
OnCreate : Acciones cuando se crea el servicio.
OnBind : Acciones para ligarlo a una aplicación.
OnStart : Acciones cuando se inicia el servicio.
Lanzar el servicio. Dos formas
Explícita: startService(new Intent(MyService.MY_ACTION));
Implícita:startService(new Intent(this,MyService.class));
Pararlo : stopService(new Intent(this, service.getClass()));
9. Hebras
Todos los componentes de la aplicación
(incluidos los servicios) corren sobre la hebra
principal.
Para evitar que la aplicación se bloquee las
operaciones más costosas en tiempo se
realizan en hebras de segundo plano.
Se programan en hebras tareas como el
manejo de ficheros, transacciones en bases de
datos o búsquedas de redes.
10. Reproducción Multimedia
Creamos una instancia de la clase MediaPlayer
por cada archivo.
MediaPlayer implementa funciones:
De reproducción: start, stop, pause, seek...
Recuperación de información: nombre, tamaño,
tipo...
Límite de instancias de la clase → tenemos
que liberar recursos.
11. Grabación Multimedia
Creamos una instancia de MediaRecorder con
las opciones pertinentes:
Establecemos la fuente con setAudioSource o con
setVideoSource.
Definir el formato de salida con setOutputFormat.
Seleccionar el codificador a utilizar.
Y el fichero de salida.
Con start, stop y release manejamos la
grabación.
12. El gestor de notificaciones
Mensaje en la barra de estados.
Icono en la barrra de estados
Iluminar LEDs.
Vibración.
Sonidos.
13. Native Android Content Providers
Integración entre aplicaciones
Content Provider Datos que ofrece
Browser Historial, marcadores y otra información del navegador.
CallLog Detalles sobre llamadas (perdidas, duración, etc.)
Contacts Datos sobre los contactos de tu agenda
MediaStore Ficheros multimedia como audio, vídeo e imágenes.
Settings Configuración del dispositivo.
14. Hacer nuevos Content Providers
Utilizar un sistema de almacenamiento de
datos (usualmente en ficheros o usando
SQLite).
Crear una clase que herede de
ContentProvider.
Definiendo una serie de métodos: getType,
onCreate, query, insert, delete y update.
Declarar el proveedor de contenido en el
fichero AndroidManifest.xml de nuestra
aplicación.
15. Opciones generales de conexión
Establecer red preferida.
Activar o desactivar un tipo de red.
¿Falló la conexión a la red preferida?
¿Hay conexión?
¿Por qué falló la conexión?
16. Opciones específicas de WiFi
¿Está el dispositivo habilitado?
Habilitar el dispositivo.
Obtener lista de redes configuradas.
Conectar a una red.
Obtener información de la conexión.
Escanear todos los puntos de acceso.
Consultar el resultado del escaneo.
17. Conclusiones
Está diseñado para facilitar el desarrollo a terceros.
Nos ofrece bibliotecas para trabajar con dispositivos que
tradicionalmente no se incluían en equipos móviles.
Facilita la integración entre aplicaciones.
Ofrece un alto nivel de abstracción frente al hardware
nunca visto antes.
Al estar basado en Linux ofrece un soporte robusto y
fiable.
Que esté mantenido por la Open Handset Alliance ofrece
garantías de perdurabilidad en el tiempo.