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.

Androidpresentacion 090531114810-phpapp02

  • 1.
    Android: desarrollo de aplicaciones Raúl Jiménez Ortega  Nicolás Fernández Valverde  José Luis López Pino
  • 2.
    Diseño de lainterfaz 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.
  • 3.
  • 4.
    Servicios basados enlocalizació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 privatevoid 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  Seejecutan 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 unservicio.  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 loscomponentes 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  Creamosuna 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  Creamosuna 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 denotificaciones  Mensaje en la barra de estados.  Icono en la barrra de estados  Iluminar LEDs.  Vibración.  Sonidos.
  • 13.
    Native Android ContentProviders 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 ContentProviders  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 deconexió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 deWiFi  ¿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ñadopara 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.