Como ya sabéis Google ha presentado la ultima preview del nuevo Android 5.0 Lollipop, y juntamente con las imágenes del sistema ha liberado la versión 5.0 del SDK. Este nuevo SDK viene cargado de novedades y actualizaciones. Vamos a intentar hacer un rápido resumen de estos cambios y qué nuevas herramientas disponen los desarrolladores para empezar a trabajar con Lollipop.

SDK para Android 5.0 Lollipop, repaso a todas las novedades

El nuevo SDK incluye ART como runtime por defecto, deberemos testear las aplicaciones que desarrollemos para funcionar con el nuevo runtime y en el caso de ser necesario adaptarlas.

Hay que tener en consideración que las APIs han variado desde la ultima preview siendo necesario revisar que nuestras apps funcionen correctamente, en caso de que las apps hagan uso de notificaciones también será necesario adaptarlas al nuevo estilo y comportamiento del sistema.

Cambios en la interfaz de usuario

Soporte para Material design

Android 5.0 Lollipop  introduce Material Design, el nuevo SDK nos trae la API número 21 permitiendo que adaptemos todas nuestras aplicaciones al estilo renovado de nuestro Android. El soporte para Material Design incluye:

  • El tema Material
  • Sombras
  • 750 iconos Material liberados
  • El widget Recycler View
  • Dibujo de animaciones y efectos de estilizado
  • Animación de Material design y efectos de transición
  • Animaciones basadas en el estado de la vista
  • Widgets de interfaz y barras de aplicaciones configurables con paletas de colores que podemos controlar
  • Drawables animados y no animados basados en gráficos XML vectoriales

Documentos y actividades concurrentes en la pantalla de recientes

Ahora las aplicaciones pueden abrir mas tareas. Esta opción facilita la multitarea permitiendo que los usuarios puedas cambiar rápidamente entre aplicaciones y documentos desde la pantalla de recientes. Un ejemplo seria el cambio de pestañas en un navegador web, documentos o chats en una aplicación de mensajería.

Actualización de WebView

Android 5.0 actualiza la implementación de Webview, añadiendo seguridad y estabilidad así como corrección de bugs.

Compartir y captura de la pantalla

La nueva API android.media.projection permite añadir a nuestras aplicaciones la opción de captura y compartir  pantalla. Esta funcionalidad es útil, por ejemplo, si queremos permitir compartir la pantalla en una aplicación de videoconferencia.

Notificaciones en la pantalla de bloqueo y con metadatos

La pantalla de bloqueo permite visualizar notificaciones de nuestras apps. Los usuarios pueden seleccionar desde ajustes el rango de sensibilidad de las notificaciones que se verán en la pantalla de bloqueo. Nuestras apps podrán controlar los detalles de las notificaciones que aparecerán en la pantalla de bloqueo.

El nuevo sistema nos permite añadir metadatos en las notificaciones, para que el sistema las clasifique de una manera más inteligente.

Gráficos

Soporte para OpenGL ES 3.1

Android 5.0 añade soporte para interfaces de usuario Java y soporte para OpenGL Es 3.1. Esta nueva funcionalidad incluye:

  • Sombreados computados
  • Objetos sombreados separados
  • Comandos indirectos para dibujar
  • Multisample y texturas stencil
  • Mejoras en el lenguaje de sombreado
  • Extensiones para modos avanzados de moldeado y debug
  • Retrocompatibilidad con OpenGL ES 2.0 y 3.0

Android Extension Pack

Como añadido esta versión incluye un pack con interfaces Java y soporte nativo para gráficos avanzados. El paquete incorpora:

  • Teselado y geometría de sombras
  • El formato de compresión ASTC
  • Interpolarización y muestreado de sombras
  • Diferentes modos de modelado dependiendo del color que se encuentre en el frame buffer

Multimedia

API para funciones avanzadas de la cámara

Esta nueva API facilita el grano fino en la captura y el procesamiento de imágenes. Ahora podemos listar los dispositivos presentes en el sistema y conectar a uno de ellos específicamente. Se añade nuevos modos de captura, opciones de configuración para disparar una sola o múltiples veces o detección de las características de nuestro dispositivo.

Reproducción de audio

Esta nueva versión añade los siguientes cambios a AudioTrack:

  • Nuestra aplicación puede suministrar datos de audio en formato PCM FLOAT. Esto nos permite un rango dinámico mayor y más precisión.
  • Reproducción de datos de audio como ByteBuffer, el mismo formato que MediaCodec.
  • La opción WRITE NON BLOCKING simplifica el buffering y la multitarea en algunas aplicaciones.

Control de reproducción

El uso de las nuevas APIS de notificación y reproducción facilitan que el sistema extraiga y muestre información sobre lo que se está reproduciendo. Controlar la reproducción es mucho más fácil gracias a las nuevas clases. Además la nueva versión añade la opción de navegar entre los archivos multimedia de todas las otras aplicaciones.

Almacenamiento: selección de carpetas

Ahora los usuarios podrán seleccionar directorios y dar permisos de lectura/escritura en todos los documentos contenidos sin tener que confirmar el acceso en cada uno de los elementos.

También será posible añadir nuevos directorios-paquetes en volúmenes compartidos.

Wireless y conectividad: Múltiples conexiones red, BLE y NFC

Android 5.0 permitirá que nuestras apps escaneen dinámicamente las conexiones de red disponibles, sus características y establecer una conexión a ellas. Esta funcionalidad es útil cuando nuestra aplicación requiere de una red especializada.

Ahora nuestro dispositivo Android sera capaz de actuar como un dispositivo Bluetooth LE periférico. Las aplicaciones pueden utilizar esta característica para hacerse visibles a dispositivos cercanos, esto permite que nuestra aplicación funcione como podómetro o monitor de constantes y comunicar los datos a otro dispositivo Bluetooth LE.

El SDK 5.0 también añade estas mejoras para flexibilizar el uso del NFC:

  • Android Beam esta disponible en el menú compartir
  • Las aplicaciones podrán  invocar a Android Beam.
  • Podremos crear datos NDEF que contengan texto UTF-8.
  • Capacidad de registrar la ID de la aplicación dinámicamente, y la selección del tipo de tarjeta que queremos emular.

Project Volta

Podremos clasificar y ejecutar las tareas para que arranquen asincrónicamente en un momento especifico o  dependiendo de una condición (por ejemplo cuando el teléfono esta cargando).

Como desarrolladores podremos generar datos sobre el uso de la batería en un dispositivo. Esta información nos permitirá comprender y diagnosticar cualquier problema con el uso de la batería de las apps.

Android en el trabajo y la educación

Gestión de perfiles

Android 5.0 permite ejecutar aplicaciones en un entorno corporativo. Un administrador del dispositivo puede iniciar un proceso para añadir un perfil gestionado que estará presente pero separado de los otros perfiles del dispositivo.

Propietario del sistema

Ahora podremos desplegar una aplicación especializada como propietario del sistema. Esta aplicación permitirá crear y eliminar usuarios secundarios, también podrá configurar y modificar elementos globales del sistema.

Anclado de la pantalla

Esta opción hace que las aplicaciones puedan evitar que un usuario abandone una tarea o sean interrumpidos por notificaciones. Nos será muy útil si estamos desarrollando una aplicación que requiera mucha atención, aplicaciones que solo tengan un solo propósito o aplicaciones de quiosco.

Existen dos formas de activarlo:

  • Manualmente: como usuarios es posible activarlo desde Ajustes > Seguridad > Fijar Pantalla, después desde el menú de aplicaciones recientes podremos anclar la pantalla dándole a la chincheta.
  • Por codigo: podremos activar directamente el anclado desde las aplicaciones, si la aplicación no dispone de permisos de propietario nos pedirá confirmación.

Impresión: renderizar un PDF como bitmap

Ahora podremos renderizar un documento PDF a imágenes bitmap gracias a la nueva clase PdfRenderer. Podremos añadir parametros adicionales si solo queremos convertir una porción del documento.

Sistema: estadísticas de uso de la app

El nuevo sistema nos permitirá conocer el historial de uso de las aplicaciones. Será necesario disponer de permisos para ello. El sistema guardara los siguientes datos:

  • La última vez que se usó la aplicación
  • El tiempo total de uso en primer plano
  • El momento en que un elemento pasa de primer plano a segundo plano o viceversa durante el día
  • El momento en que cambia alguna configuración del sistema (por ejemplo la orientación del dispositivo)

Testeo y accesibilidad

Android 5.0 dispone de nuevas herramientas para evaluar y testear las aplicaciones. Podremos conocer si una aplicación renderiza frames a una frecuencia adecuada o podremos ejecutar comandos shell como dumpsys, am, content o pm.

Los servicios de accesibilidad ahora podrán recoger información detallada sobre las propiedades de una ventana en pantalla, podremos definir acciones corrientes o personalizadas, también se ha mejorado el control de la conversión de texto a voz ya que la nueva clase Voice nos permitirá asociar y customizar perfiles.

Métodos de introducción

Ahora será más fácil para los usuarios cambiar de método de introducción, para ello será necesario que el método disponga de un mecanismo de cambio. En el momento de cambiar de método (normalmente tocando el globo en el teclado) el sistema revisa si el siguiente método dispone de este mecanismo pasando por el o evitándolo.

Declaraciones manifiestas

Las aplicaciones podrán solicitar las características del sistema, así podremos asegurar que la aplicación solo se instalara en dispositivos que cumplan los requisitos que necesite la app. Finalmente podremos declarar los permisos que requiere nuestra aplicación para acceder a ciertas APIs.

Esta es una pequeña descripción de los cambios más importantes que nos encontraremos en esta versión 5.0 del SDK de Android. Un resumen de toda la información completa de aquí. Vamos, hay que ponerse las pilas que el día 3 de Noviembre (supuesta fecha de la OTA oficial) ya esta aquí al lado de la esquina. Por si todavía no lo tenéis descargado este es el enlace: Android SDK. También os dejamos el enlace al código libre de la app de Google I/O que ha sido actualizado para adaptarse a este SDK.

¿Creéis que veremos un gran cambio en las apps a partir de ahora? ¿Son estas mejoras lo suficiente interesantes como para convencer a los desarrolladores?