Novedades en Android Lollipop

Después de meses de especulaciones, exageraciones y burlas, Google lanzó oficialmente Android 5.0 al mundo el 12 de noviembre de 2014. El SDK se puso a disposición el 3 de noviembre. Ya sabíamos mucho sobre las características, debido a la LVista previa del SDK que se lanzó el 25 de junio de 2014. Lo que no sabíamos era lo que el Lestaría parado para.

Pirulí Fue el nombre dado a la actualización 5.0. Mirando hacia atrás, Lollipop era un claro favorito. Pero, si se le da suficiente tiempo para especular, lo obvio una vez más tiene el poder de sorprender.

Lollipop es una actualización importante para la plataforma Android. Podría decirse que es el lanzamiento más grande hasta la fecha, y ciertamente el más ambicioso.

1. Características

Ahora que el SDK de Android está disponible, aquí hay un resumen de algunas de las nuevas características de Android 5.0..

Batería

Proyecto volta   

En los últimos años, Google se ha centrado con cada lanzamiento de Android en un aspecto de desarrollo particular del sistema operativo y cómo puede mejorarse. Para 5.0, fue mejorando la vida de la batería..

los JobScheduler API le permite ejecutar trabajos de forma asincrónica en un momento posterior o en condiciones particulares. JobInfo los objetos se pueden usar para definir las condiciones en las que se ejecutará un trabajo programado.

Gracias a estas adiciones, los desarrolladores ahora tienen mucho más control sobre cuándo y cómo se realizan las tareas de agotamiento de la batería. 

Herramientas de desarrollo

Hay un nuevo ADBmando dumpsys batterystats que se puede utilizar para generar datos estadísticos sobre el uso de la batería en un dispositivo. Echa un vistazo al siguiente comando para ver cómo funciona esto.

adb shell dumpsys batterystats --cargado

Notificaciones

En Lollipop, las notificaciones se pueden mostrar en la pantalla de bloqueo. Los desarrolladores pueden especificar la cantidad de información mostrada en una notificación a través de setVisibilidad, el cual acepta los siguientes valores:

  • VISIBILITY_PRIVATE: muestra información básica, como el icono de la notificación, pero oculta el contenido de la notificación
  • VISIBILIDAD_PÚBLICA: muestra el contenido de la notificación
  • VISIBILITY_SECRET: no muestra nada, excluyendo incluso el icono de la notificación

Ahora se pueden agregar metadatos a las notificaciones para permitir categorías y prioridad, y para recopilar contactos adicionales.

Las notificaciones clave, como las llamadas entrantes, aparecerán en una ventana de notificación mano a mano, que flotará en la parte superior de la aplicación actual hasta que el usuario reconozca o rechace la notificación..

Multitarea

La pantalla de los últimos ha cambiado su nombre a visión general. Con el nuevo nombre vienen nuevas API que mejoran las opciones de multitarea en Android. Ahora puede tener sus actividades tratadas como tareas y mostrarse en su propia ventana en la pantalla de resumen.

Por ejemplo, una aplicación de navegador web podría configurarse para que cada pestaña tenga su propia ventana. En la pantalla de los últimos lanzamientos, se habría mostrado una sola aplicación de navegador.

Si tienes un sitio web, puedes agregar  a la sección de encabezado para que la vista general muestre el color dado como encabezado de su sitio web.

Tiempo de ejecución y ARTE

Las versiones anteriores de Android han utilizado Dalvik como la máquina virtual de proceso. Las aplicaciones se escriben comúnmente en Java, que luego se compila a bytecode. Esto luego se traduce al código de bytes de Dalvik y se almacena en .dex y .índice archivos, para que Dalvik los procese. 

Esta es una explicación muy básica de lo que está haciendo el tiempo de ejecución y es de esperar que transmita su importancia. Las aplicaciones se ejecutan en la máquina virtual de proceso, por lo que su rendimiento determina el rendimiento general de la aplicación y es un cuello de botella..

Dalvik utiliza JIT (Just In Time) compilación, lo que significa que solo ejecuta la aplicación en el momento en que se necesita.

ARTE, por otro lado, utiliza un AOT (Ahead Of Time) compilación para compilar el bytecode. Cuando se instala una aplicación, es compilada por ART's dex2oatutilidad, que crea archivos ejecutables ELF en lugar de archivos .odex. A partir de entonces, la aplicación se ejecuta desde el ejecutable ELF ya compilado..

Eso es un montón de compilación guardada a expensas de los tiempos de instalación de la aplicación más largos y un poco de espacio de disco extra.

Con la adición de la recolección de basura mejorada (GC), ART supera a Dalvik en casi todos los aspectos, lo que hace que la experiencia de Android sea más nítida y fluida..

Android TV

Para ayudar a llevar su aplicación a pantallas grandes, Lollipop presenta el Leanback UI y el Marco de entrada de Android TV (TIF). La biblioteca Leanback proporciona widgets de interfaz de usuario para aplicaciones de TV. TIF está diseñado para permitir que las aplicaciones de TV manejen secuencias de video de fuentes como entradas HDMI, sintonizadores de TV y receptores de IPTV..

Gráficos

Se ha añadido Khronos OpenGL ES 3.1. Las características clave incluyen:

  • calcular sombreadores
  • objetos de sombreado separados
  • mejoras del lenguaje de sombreado
  • Extensiones para modos de mezcla avanzados y depuración.
  • comandos de dibujo indirecto
  • Texturas multisample y stencil.

Android 5.0 sigue siendo compatible con OpenGL ES 2.0 y 3.0.

Paquete de Extensión de Android (AEP)

Para complementar OpenGL ES 3.1, se ha agregado un conjunto de extensiones de OpenGL ES que permiten lo siguiente:

  • soporte garantizado de sombreado de fragmentos para buffers de almacenamiento de sombreado, imágenes y atómicos (el soporte de sombreado de fragmentos es opcional en OpenGL ES 3.1)
  • Diferentes modos de mezcla para cada color adjunto en un buffer de cuadro
  • sombreadores de teselación y geometría
  • Formato de compresión de textura ASTC (LDR)
  • Interpolación y sombreado por muestra.

Vista de cromo

Android Lollipop incluye una nueva versión de Chromium para Web View, basada en el Cromo m37 lanzamiento que agrega soporte para WebAudio, WebRTC y WebGL.

El soporte nativo para componentes web también se incluye en la actualización y permitirá el uso de Polymer y su Diseño de materiales Elementos sin necesidad de polietileno..

Desde Android 5.0, Chromium ahora se puede actualizar desde Play Store, por lo que las nuevas API y las correcciones de errores estarán disponibles de inmediato y ya no requerirán una actualización del sistema operativo Android.

Navegación de medios    

El nuevo android.media.browse API permite que las aplicaciones naveguen por la biblioteca de contenido multimedia de otras aplicaciones. los MediaBrowserService clase se utiliza para exponer medios en una aplicación, mientras que MediaBrowser clase se utiliza para interactuar con un servicio de navegador de medios.

Control de reproducción de medios

Se han introducido dos nuevas clases para simplificar la gestión del control de la reproducción en diferentes IU y servicios..

MediaSession reemplaza RemoteControlClient. Proporciona un conjunto de métodos de devolución de llamada para su uso en controles de transporte y botones multimedia.. MediaController se puede usar para crear una aplicación de controlador de medios personalizada, que luego se puede usar para enviar comandos a un MediaSession.

Nuevos sensores

Se han introducido dos nuevos sensores:

  • Detector de inclinación: mejora el reconocimiento de actividad
  • Sensor de ritmo cardiaco: capaz de informar la frecuencia cardíaca del usuario que toca el dispositivo

Por supuesto, ambos sensores requieren hardware compatible.

Aprovisionamiento Gestionado

Los administradores de dispositivos pueden usar un servicio de aprovisionamiento gestionado para agregar aplicaciones a un perfil administrado por separado. Si hay una cuenta personal existente en un dispositivo que se ha aprovisionado, las aplicaciones de perfil administradas aparecerán junto a las aplicaciones existentes.

Propietario del dispositivo

El propietario de un dispositivo es un tipo especializado de administrador de dispositivos que puede crear y eliminar usuarios secundarios y configurar ajustes globales, esencialmente otorgándole a Android un administrador tradicional y un sistema de cuentas de usuario..

Fijación de pantalla

La captura de pantalla es una nueva característica que es comparable al modo de quiosco en iOS. La fijación de pantalla incluye las siguientes características:

  • La barra de estado está en blanco.
  • Otras aplicaciones no pueden lanzar nuevas actividades..
  • Las notificaciones de usuario y la información de estado están ocultas.
  • La aplicación actual puede crear nuevas actividades siempre que no se creen nuevas tareas.

La fijación de pantalla se puede activar manualmente a través de Ajustes> Seguridad> Fijación de pantalla. También se puede activar programáticamente. los startLockTask Se puede llamar al método desde su aplicación para activar el anclaje de pantalla. Si la aplicación no es del propietario de un dispositivo, se mostrará un mensaje de confirmación. los setLockTaskPackages El método puede ser llamado por una aplicación propietaria y evitará el aviso de confirmación.

Para desactivar la fijación de pantalla, necesita llamar stopLockTask si fue iniciado por una aplicación propietaria del dispositivo. Si fue activado por un propietario que no es un dispositivo, el usuario puede salir del modo de anclaje de pantalla manteniendo presionados los botones de retroceso y retroceso.

Compartir pantalla

Captura de pantalla ahora es posible a través de la nueva android.media.projection APIs. El crear Pantalla virtual Este método permite a la aplicación de llamada capturar la pantalla en un objeto de superficie, que luego puede enviarse a través de la red. La API solo puede capturar contenido no seguro y no incluye audio.

Cámara

La captura de imágenes RAW finalmente ha llegado a Android, gracias a la nueva android.hardware.camera2 API.

Bluetooth de baja energía

Los dispositivos Android ahora pueden actuar comoBluetooth periféricos LE. Las aplicaciones pueden hacer uso de esto para dar a conocer su presencia en los dispositivos cercanos. Con el nuevo android.bluetooth.le API, puede permitir que sus aplicaciones se conecten a dispositivos Bluetooth cercanos, difundan anuncios y analicen las respuestas. Estas nuevas características también vienen con un nuevo permiso manifiesto, BLUETOOTH_ADMIN.

Estas API serán extremadamente útiles cuando se trabaje con dispositivos portátiles, aplicaciones de salud y estado físico y aplicaciones de monitoreo. Todas estas son áreas de crecimiento predichas para Android en un futuro cercano.

NFC

NFC ha sido mejorado de varias maneras:

  • Android Beam Ahora es una opción en el menú de compartir..
  • invocarbayo Se puede utilizar para iniciar el intercambio de datos. Ya no tienes que golpear físicamente los dispositivos.
  • registroAidsForService y setPreferredService Se han añadido para ayudar al desarrollo de aplicaciones de pago..

Conexiones de red múltiple

Las nuevas API permiten que las aplicaciones consulten las redes para conocer las funciones disponibles, como si la red es celular, con medidor o Wi-Fi.

Marco de impresión

Las imágenes de mapa de bits ahora se pueden representar desde páginas de documentos PDF, usando el nuevo PdfRendered clase.

Editores de métodos de entrada (IME)

Ahora puede hacer un ciclo a través de diferentes IME disponibles para la plataforma. Esto se logra usando el shouldOffetToNextInputMethod método.

2. Diseño del material

Una de las características más importantes de Android 5.0 es Material Design. Material Design es un conjunto de pautas relacionadas con el diseño visual, el movimiento del contenido y la interacción del usuario. Las directrices están destinadas a ir más allá de Android y están diseñadas para una amplia gama de dispositivos y plataformas.

Polymer es un ejemplo notable de la naturaleza multiplataforma de Material Design, donde Google crea varios elementos web de Material Design para ayudar en la construcción de sitios web / aplicaciones web con un tema de Material Design. A pesar de su naturaleza multiplataforma, Material Design sigue siendo un punto focal de Android 5.0.

Nuevos Widgets

Lollipop introdujo dos nuevos widgets:

  • CardView: Este widget permite que la información se agrupe de manera consistente. La tarjeta en sí puede modificarse su profundidad para promoverla o resaltarla según sea necesario.
  • RecyclerView: Esta es una versión más avanzada del Vista de la lista widget.

Temas nuevos    

Hay dos nuevos temas que hacen uso de los principios de Diseño de Materiales., Material oscuro y Material ligero. Ambos aplican nuevos widgets de sistema de interfaz de usuario. Los widgets del sistema son fáciles de personalizar y puedes configurar su paleta de colores. Varias animaciones y transiciones también son valores predeterminados de estos temas, como el efecto de onda.

Profundidad y sombra

La profundidad ahora puede modificarse en las vistas de Android a través de la nueva propiedad Z. Los valores más altos de Z proyectan sombras más grandes alrededor de la vista, lo que da la apariencia de una mayor elevación. Este es un elemento básico del espíritu del Diseño de Materiales, donde el objetivo es crear una apariencia textil mediante el uso de capas..

Animaciones

Otro elemento básico de Material Design es la animación. Las animaciones de retroalimentación táctil y una gran cantidad de transiciones de actividades ayudan a crear una experiencia táctil e inmersiva. El objetivo es no hacer que la información salga o desaparezca. Cada vista / objeto debe aparecer como una capa en una superficie.

Imagina un escritorio bonito, limpio, blanco. En este escritorio tienes varios papeles, notas post-it y papelería. Cuando miras al escritorio, no es una vista plana. El escritorio contiene varias capas, y los objetos tienen diferentes profundidades y sombras proyectadas en la capa debajo.

Si necesita ver una página debajo de otra página, debe mover la página de portada fuera del camino. Si desea colocar su computadora portátil en el escritorio, debe deslizar los papeles existentes para hacer espacio. Cuando tocas algo en tu escritorio, se mueve, se dobla, vibra y baraja.

3. Usando Android 5.0

Para comenzar con Android 5.0, descargue la plataforma SDK para v21 en su IDE preferido. Lo más probable es que esto se haga a través del administrador de SDK en Eclipse o Android Studio..

En el ApplicationManifest.xml archivo y / o construir.gradle archivo, establecer el targetSdkVersion a 21.

Cambios y consideraciones importantes:

Hay un dicho en el mundo de los superhéroes: "Con gran poder, viene una gran responsabilidad". Hay una similar en la comunidad de desarrollo: "Con grandes actualizaciones, vienen las pruebas exhaustivas".

Aquí hay una lista de verificación rápida, si ya tiene una aplicación para Android:

  • ¿Mi aplicación funciona sin problemas en ART??
  • Si mi aplicación usa notificaciones, ¿cómo se integrarán en la pantalla de bloqueo??
  • ¿Puede la interfaz de usuario beneficiarse de una actualización? ¿Es el diseño de materiales un buen ajuste y cuánto trabajo implicará??
  • los RemoteControlClient La clase ahora está en desuso, así que debería pasar a la MediaSession API?
  • WebView Ahora bloquea de forma predeterminada las cookies de contenido mixto y de terceros. Necesito usar setMixedContentMode y setAcceptThirdPartyCookies?

Una lista completa se puede encontrar en el sitio web de Android Developer. 

4. Compatibilidad hacia atrás

Uno de los mayores cambios en Android 5.0 es la interfaz de usuario con la introducción de Material Design. Hacer uso de Material Design y poner en práctica las mejores prácticas de diseño requiere mucha consideración y trabajo por parte del desarrollador..

Para las aplicaciones existentes, los desarrolladores se enfrentan a desafíos adicionales, como la forma de aprovechar las nuevas funciones de 5.0 mientras mantienen la compatibilidad con versiones anteriores, proporcionando una experiencia de usuario consistente en diferentes niveles de API.

Para mostrar cómo usar Android 5.0 y Material Design en su proyecto, he creado una aplicación simple. Consiste en una sola actividad que muestra varios widgets. Entonces he añadido lo siguiente a la res / carpeta:

  • menu-v21 /: Esto contiene una copia de la menu_main.xml y se utilizará para mostrar iconos de Material Design en dispositivos Android 5.0.
  • valores-v11 /: Esto contiene un styles.xml archivo que establece el tema base para holo.lightpara todos los dispositivos que ejecutan Android 3.0 o superior. También se han realizado cambios de apariencia en la barra de acción en este archivo..
  • valores-v21 /: Esto contiene un styles.xml archivo que establece el tema base para material.lightpara dispositivos que se ejecutan en Android 5.0 y superioresTambién define los colores base..

La siguiente imagen muestra la aplicación ejecutándose en un dispositivo 4.4.2 y un dispositivo 5.0. El tema Material se ha aplicado para dispositivos 5.0+. Otros dispositivos recibirán el tema holo.light. Muestra el estado predeterminado de ambos temas y las diferencias de interfaz de usuario entre ellos..

Barra de color y acción 

Con Material Design, nunca ha sido tan fácil definir los colores base de su aplicación para adaptarse a su marca. Por ejemplo, agregar el siguiente código a su tema establecerá la notificaciónFondo de barra, Fondo de barra de acción y Widgets de interfaz de usuario.

 

Los resultados pueden ser muy sorprendentes y la aplicación se puede identificar con solo un vistazo. También hay un nuevo conjunto de iconos de Diseño de materiales, que son otra forma rápida y fácil de llevar una interfaz de usuario moderna a cualquier aplicación existente.

Este es un ejemplo de la diferencia hecha al usar los iconos de Diseño de materiales y definir los colores del tema principal:

El uso de la barra de acción y el color es una característica dominante de Material Design y puede marcar y distinguir efectivamente su aplicación. Una forma de proporcionar una experiencia de usuario consistente en diferentes niveles de API es replicar estas características en estilos y temas destinados a diferentes niveles de API.

Por ejemplo, si comparamos la aplicación que se ejecuta en un dispositivo 4.4.2 con un dispositivo 5.0:

Como pueden ver, tienen un aspecto muy distintivo. Para mejorar esto, podemos usar los mismos iconos de Diseño de materiales en niveles de API inferiores a 5.0. También podemos diseñar la barra de acción para que se parezca a la versión de Diseño de materiales..

Para los iconos, podemos cambiar las imágenes en res / menu / menu-main.xml a los iconos de Material Design. Para la barra de acción, podemos editar el res / values-v11 / styles.xml archivo para parecerse a lo siguiente:

    

Aquí hay otro vistazo a los dos comparados, después de los cambios:

La versión que se ejecuta en el dispositivo 4.4.2 se vuelve más reconocible como nuestra aplicación y nuestra marca. Sin cambios significativos, la aplicación ya se ve más coherente en las diferentes API y tiene un aspecto más moderno.

Uso de funciones no compatibles

Ciertas características son exclusivas de Android Lollipop, especialmente las transiciones de actividad y las animaciones de revelación. Esto no significa necesariamente que tenga que renunciar a usarlos o crear una aplicación separada que haga uso de ellos. Puede verificar la versión del sistema en tiempo de ejecución y solo realizar ciertas llamadas a la API si la aplicación se está ejecutando en una versión adecuada de Android.

Un ejemplo para verificar si el sistema es 5.0+:

// Compruebe si estamos ejecutando en Android 5.0 o superior si (Build.VERSION.SDK_INT> = Build.VERSION_CODES.LOLLIPOP) // Llame aquí a algunas API de diseño de material else // Implemente esta característica sin diseño de material

Mantener temas anteriores

Solo porque puedas hacer algo no siempre significa que debas. No hay absolutamente nada de malo en el tema Holo que Android ha estado usando desde Honeycomb. Puede proporcionar diseños y temas alternativos y hacer que se apliquen a diferentes niveles de API. Por ejemplo, podría hacer que el tema de Diseño de materiales se aplique a cualquier dispositivo con una API de 5.0 y superior. El tema Holo se aplicará a cualquier dispositivo con una API de 3.0 y superior. Finalmente, el tema clásico podría aplicarse a todos los dispositivos por debajo de 3.0.

Para hacer esto, usarías los siguientes directorios en tu proyecto:

  • res / valores / (ubicación predeterminada)
  • res / values-v11 / (para 3.0 +)
  • res / valores-v21 / (para 5.0 +)

En cada directorio, puede colocar un styles.xml Archivo que definirá el tema deseado..

Bibliotecas de apoyo    

Las bibliotecas de soporte de V7 r21 admiten varios widgets y características de Material Design.

Theme.AppCompat permite el uso de la paleta de colores extendiendo uno de los temas de AppCompat. Por ejemplo, Theme.AppCompat.Light:

También proporciona widgets de Material Design para lo siguiente:

  • Editar texto
  • Caja
  • Hilandero
  • Boton de radio
  • SwitchCompat
  • CheckedTextView

La biblioteca de soporte V7 también da acceso a la nueva CardViewRecyclerView widgets.

Si mantiene AppCompat en sus diseños de diseño, es posible crear un diseño único que mantendrá los mismos elementos visuales en múltiples niveles de API.

Para usar la biblioteca de soporte V7, necesita agregarlo a su proyecto. Si está utilizando Android Studio y Gradle, se puede agregar a la sección de dependencias en la construir.gradle expediente:

dependencies compile 'com.android.support:appcompat-v7:21.0.+' compile 'com.android.support:cardview-v7:21.0.+' compile 'com.android.support:recyclerview-v7:21.0.+'  

Al incluir la biblioteca de soporte v7, debe configurar su minSdkVersion a 7.

Conclusión

Android 5.0 es un lanzamiento importante. Las actualizaciones como ART y las notificaciones en pantalla tendrán un impacto inmediato. Otras actualizaciones, como Material Design, Overview y Job Scheduling llevarán tiempo para que los desarrolladores implementen y adopten.

Los usuarios también desempeñarán un papel importante en la configuración del futuro cercano de Android. Los intentos anteriores de llevar Android al espacio de TV no han sido bien recibidos. Las televisiones inteligentes en general aún no se han convertido en un dispositivo imprescindible.

Tener una experiencia de usuario familiar y unificada en múltiples dispositivos y pantallas es emocionante y, en mi opinión, es necesario seguir adelante. Sin embargo, el éxito de esto dependerá en última instancia de la adopción y la demanda de los usuarios..

Google preparó el escenario en el Google I / O de este año y con Lollipop los actores ya están reunidos. Independientemente de la duración del juego y los aplausos que recibe, nadie puede decir que Google no lo ha intentado..