Post on 12-Jun-2015
description
Android:desarrollo de aplicaciones
Raúl Jiménez Ortega Nicolás Fernández Valverde José Luis López Pino
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.
Ejemplo - Declarativo
¡Hola Mundo!
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:
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:
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.
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.
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()));
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.
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.
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.
El gestor de notificaciones
Mensaje en la barra de estados. Icono en la barrra de estados Iluminar LEDs. Vibración. Sonidos.
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.
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.
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?
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.
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.