Android 7.0 para desarrolladores

En Android 7.0 Nougat se incluyen varios y capacidades nuevas para usuarios y desarrolladores. En este documento, se destacan las novedades para desarrolladores.

Asegúrate de consultar la Cambios en el comportamiento de Android 7.0 para obtener información sobre las áreas en las que cambia la plataforma podría afectar tus apps.

Para obtener más información las funciones para consumidores de Android 7.0, visita www.android.com.

Compatibilidad con ventanas múltiples

En Android 7.0, presentamos una nueva y muy solicitada de tareas múltiples en la plataforma, compatibilidad con el modo multiventana.

Los usuarios ahora pueden abrir dos apps al mismo tiempo en la pantalla.

  • En teléfonos y tablets con Android 7.0, los usuarios pueden ejecutar dos apps una al lado de la otra o uno encima del otro en el modo de pantalla dividida. Para cambiar el tamaño de las apps, los usuarios pueden arrastrar la línea divisoria entre ellas.
  • En los dispositivos Android TV, las apps pueden mostrarse automáticamente en pantalla en pantalla. de visualización, lo que le permite seguir mostrando contenido mientras el usuario explora o interactúa con otras apps.
Apps en ejecución para dispositivos móviles con el modo de pantalla dividida

Figura 1: Apps que se ejecutan en el modo de pantalla dividida

Especialmente en tablets y otros dispositivos con pantallas más grandes, la compatibilidad con el modo multiventana te ofrece nuevas formas de atraer a los usuarios. Incluso puedes habilitar la función de arrastrar y soltar tu app para permitir que los usuarios arrastren contenido hacia o desde ella, una excelente para mejorar la experiencia del usuario.

Es sencillo agregar compatibilidad con el modo multiventana a tu app y configurar cómo se controla la visualización multiventana. Por ejemplo, puedes especificar el ID de tu actividad dimensiones mínimas permitidas, lo que evita que los usuarios cambien el tamaño de la actividad que se encuentra debajo. de ese tamaño. También puedes inhabilitar la visualización multiventana para tu app, lo que garantiza que el sistema solo muestre tu app en el modo de pantalla completa.

Para obtener más información, consulta la Compatibilidad con el modo multiventana documentación para desarrolladores.

Mejoras en las notificaciones

En Android 7.0, hemos rediseñado las notificaciones para facilitarlas y más rápido de usar. Entre los cambios, se incluyen los siguientes:

  • Actualizaciones de plantillas: Actualizaremos las plantillas de notificaciones a ponle nuevo énfasis a la imagen de héroe y al avatar. Los desarrolladores podrán hacer lo siguiente: aprovechar las plantillas nuevas con una cantidad mínima de ajustes en el código.
  • Personalización del estilo del mensaje: puedes personalizar más las etiquetas de la interfaz de usuario asociadas con tus notificaciones usando el Clase MessagingStyle. Puedes configurar el mensaje, título de la conversación y vista de contenido.
  • Notificaciones agrupadas: El sistema puede agrupar mensajes. juntos, por ejemplo, por tema del mensaje, y mostrará el grupo. Un usuario puede y realizar acciones en ellos, como Descartar o Archivar. Si notificaciones implementadas para Android Wear, este modelo.
  • Respuesta directa: En el caso de las apps de comunicación en tiempo real, la El sistema Android admite respuestas en línea para que los usuarios puedan responder rápidamente un SMS o mensaje de texto directamente en la interfaz de notificaciones.
  • Vistas personalizadas: Hay dos APIs nuevas que te permiten aprovechar las vistas decorativas, como encabezados y acciones de notificaciones, cuando se usan vistas en las notificaciones.
Dispositivo móvil que muestra notificaciones de mensajes agrupados
Dispositivo móvil que muestra notificaciones de mensajes únicos
Un dispositivo móvil que muestra una respuesta de mensaje intercalado en la interfaz de notificaciones

Figura 2: Notificaciones agrupadas y respuesta directa.

Para obtener información sobre cómo implementar las nuevas funciones, consulta la Notificaciones .

Compilación de JIT y AOT guiada por perfiles

En Android 7.0, agregamos un compilador Just in Time (JIT) con código de la generación de perfiles a ART, lo que le permite mejorar constantemente el rendimiento de las apps para Android mientras se ejecutan. El compilador JIT complementa el conjunto de de desarrollo anticipado (AOT) y ayuda a mejorar el rendimiento del tiempo de ejecución, ahorrar y acelera las actualizaciones de apps y del sistema.

La compilación guiada por perfiles permite que ART maneje la compilación AOT/JIT para cada app según su uso real y las condiciones del dispositivo. Por ejemplo, ART mantiene un perfil de los métodos directos de cada app y puede compilar previamente y almacenar en caché esos métodos para un mejor rendimiento. Además, deja otras partes de la app sin compilar hasta que se usen.

Además de mejorar el rendimiento de partes clave de la app, la guía para el perfil la compilación ayuda a reducir el espacio de memoria RAM total de una app, incluida la binarios. Esta función tiene particular importancia en los dispositivos de memoria reducida.

ART administra la compilación guiada por perfiles de una manera que minimiza el impacto en la batería del dispositivo. Realiza compilaciones previas únicamente cuando el dispositivo se encuentra inactivo y para ahorrar tiempo y batería al hacer ese trabajo de antemano.

Ruta de acceso rápida a la instalación de aplicaciones

Uno de los beneficios más palpables del compilador JIT de ART es la velocidad de las apps instalaciones y actualizaciones del sistema. Incluso las apps grandes que necesitaban varios minutos para para optimizar e instalar en Android 6.0, ahora pueden instalarse en tan solo segundos. Las actualizaciones del sistema también son más rápidas, ya que no hay más paso de optimización.

Descanso sobre la marcha...

En Android 6.0, se presentó Descanso, un modo de sistema que ahorra batería aplazando de las apps Actividades de CPU y red cuando el dispositivo está inactivo, por ejemplo, sobre una mesa o en un cajón.

Ahora, en Android 7.0, Descanso da un paso más y ahorra batería dondequiera que estés. cada vez que la pantalla permanece apagada durante un período y el dispositivo está desenchufado, El modo Descanso aplica un subconjunto de las restricciones de CPU y red conocidas a las apps. Esto significa que los usuarios pueden ahorrar batería incluso cuando llevan sus dispositivos en su bolsillos.

Ilustración de cómo Descanso aplica un primer nivel de restricciones de actividad del sistema para prolongar la duración de la batería

Figura 3: Ahora se aplica el modo Descanso para mejorar la duración de la batería, incluso cuando el dispositivo no está quieto.

Poco tiempo después de que se apaga la pantalla, cuando el dispositivo está funcionando la batería, aparece Descanso restringe el acceso a la red y aplaza tareas y sincronizaciones. Durante el mantenimiento breve las aplicaciones, se les permite el acceso a la red y cualquiera de sus se ejecutan tareas o sincronizaciones. Encender la pantalla o enchufar el dispositivo hace que que el dispositivo salga del modo Descanso.

Cuando el dispositivo vuelve a estar quieto, con la pantalla apagada y con la batería encendida durante durante un período, Descanso aplica todas las restricciones de CPU y red en PowerManager.WakeLock, alarmas de AlarmManager y Escaneos de GPS/Wi-Fi

Las prácticas recomendadas para adaptar tu app al modo Descanso son las mismas independientemente de si dispositivo está en movimiento, por lo que, si ya actualizaste tu app para para controlar Descanso, ya está todo listo. De lo contrario, empieza a adaptarte tu app a Descanso ahora.

Project Svelte: Optimizaciones en segundo plano

Project Svelte representa un esfuerzo constante por minimizar el uso de memoria RAM por parte del sistema y las aplicaciones en los diferentes dispositivos Android del ecosistema. En Android 7.0, la función Project Svelte se enfoca en optimizar la forma en que las apps se ejecutan en segundo plano.

El procesamiento en segundo plano es esencial en la mayoría de las apps. Cuando se manejan bien, pueden hacer que la experiencia del usuario sea increíble: inmediata, rápida y pertinente al contexto. Cuando no se maneja de forma correcta, el procesamiento en segundo plano puede consumir innecesariamente RAM (y batería) y afectan el rendimiento del sistema de otras apps.

Desde Android 5.0, JobScheduler ha sido el forma preferida de realizar un trabajo en segundo plano de una manera que sea positiva para los usuarios. Las apps pueden programar tareas y, al mismo tiempo, permitir que el sistema se optimice según las condiciones de memoria, alimentación y conectividad. JobScheduler ofrece control y la simplicidad y queremos que todas las apps lo usen.

Otra buena opción es GCMNetworkManager, que forma parte de los Servicios de Google Play, que ofrece una programación de trabajos similar con compatibilidad entre versiones heredadas de Android

Continuamos ampliando JobScheduler y GCMNetworkManager para reunirte con más de tus casos de uso; por ejemplo, en Android 7.0, ahora puedes programar la ejecución funcionan según los cambios en los proveedores de contenido. Al mismo tiempo, empezamos algunos de los patrones más antiguos que pueden reducir el rendimiento del sistema especialmente en dispositivos con poca memoria.

En Android 7.0, quitaremos tres transmisiones implícitas que se usan con frecuencia: CONNECTIVITY_ACTION, ACTION_NEW_PICTURE y ACTION_NEW_VIDEO, ya que estos pueden activar la procesos en segundo plano de varias apps a la vez y agotan la memoria y la batería. Si los recibe tu app, aprovecha Android 7.0 para En su lugar, migra a JobScheduler y las APIs relacionadas.

Echa un vistazo a la vista en segundo plano Optimizaciones para obtener más detalles.

SurfaceView

Android 7.0 ofrece movimiento síncrono a SurfaceView que proporciona un mejor rendimiento de la batería que TextureView en ciertos casos: cuando se renderizan videos o Contenido 3D, las apps con desplazamiento y posición de video animado usan menos energía con SurfaceView que con TextureView.

La clase SurfaceView permite una composición más eficiente en el uso de la batería en de la pantalla, ya que está compuesta por hardware dedicado, separado de la app contenido de la ventana. Como resultado, se producen menos tipos copias que TextureView.

Ahora la posición del contenido de un objeto SurfaceView se actualiza de forma síncrona con el contenido de la app que lo incluye. Un resultado de este cambio es que traducciones o escalas de un video que se reproduce en un SurfaceView ya no producirá barras negras a lo largo de la vista mientras esta se mueva.

A partir de Android 7.0, te recomendamos que ahorres energía usando SurfaceView en lugar de TextureView.

Ahorro de datos

Ahorro de datos en Configuración

Figura 4: Ahorro de datos en Configuración.

Durante la vida útil de un dispositivo móvil, el costo de un plan de datos móviles, por lo general, supera el costo del propio dispositivo. Para muchos usuarios, los datos móviles son recurso costoso que quieren conservar.

Android 7.0 presenta el modo Ahorro de datos, un nuevo servicio de sistema que ayuda a reducir el uso de datos móviles por parte de las apps, ya sea en roaming, cerca del final del ciclo de facturación, o en un pequeño paquete prepago de datos. El Ahorro de datos permite que los usuarios controlen el modo en que las apps usan datos móviles y permite a los desarrolladores proporcionar un servicio más eficiente Ahorro activado.

Cuando un usuario habilita el Ahorro de datos en la Configuración y el dispositivo se en una red de uso medido, el sistema bloquea el uso de datos en segundo plano y las aplicaciones de señales usen menos datos en primer plano siempre que sea posible, por ejemplo, limitando tasa de bits para la transmisión, reducir la calidad de la imagen, aplazar el almacenamiento previo en caché optimista etcétera. Los usuarios pueden permitir apps específicas para permitir datos medidos en segundo plano incluso cuando está activado el Ahorro de datos.

Android 7.0 extiende el ConnectivityManager para proporcionar a las apps un de recuperar el las preferencias de Ahorro de datos del usuario y controlar cambios en las preferencias. Todas las apps deben verificar si el usuario habilitó la opción Datos Ahorrar y esforzarte por limitar el uso de datos en primer y segundo plano

API de Vulkan

Android 7.0 integra VulkanTM, una nueva API de renderización 3D, en la plataforma. Me gusta OpenGLTM ES, Vulkan es un estándar abierto que mantiene los gráficos y la renderización en 3D por Khronos Group.

Vulkan se diseñó desde cero para minimizar la sobrecarga de la CPU en el controlador. y permitir que tu aplicación controle el funcionamiento de la GPU de forma más directa. Vulkan también permite una mejor paralelización, ya que permite que varios subprocesos realicen como la construcción del búfer de comandos a la vez.

Las herramientas y las bibliotecas de desarrollo de Vulkan están incluidas en el SDK de Android 7.0. Ellas incluyen:

  • Encabezados
  • capas de validación (bibliotecas de depuración);
  • compilador SPIR-V;
  • biblioteca de compilación de tiempo de ejecución de SPIR-V.

Vulkan solo está disponible para apps en dispositivos con hardware compatible con Vulkan. como Nexus 5X, Nexus 6P y Nexus Player. Estamos trabajando estrechamente con nuestros y socios para llevar Vulkan a más dispositivos lo antes posible.

Para obtener más información, consulta la documentación de la API.

Quick Settings Tile API

Mosaicos de Configuración rápida en el panel de notificaciones

Figura 5: Tarjetas de Configuración rápida en el panel de notificaciones

La Configuración rápida es una forma simple y popular de mostrar configuraciones y acciones clave, directamente desde el panel de notificaciones. En Android 7.0, expandimos el alcance de Configuración rápida para que sea aún más útil y práctico.

Agregamos más espacio para mosaicos adicionales de Configuración rápida, que los usuarios pueden acceder a un área de visualización paginada deslizando el dedo hacia la izquierda o la derecha. También hemos dado a los usuarios control sobre qué mosaicos de Configuración rápida aparecen y dónde se encuentran los usuarios pueden agregar o mover mosaicos con solo arrastrarlos y soltarlos.

Para desarrolladores, Android 7.0 también incorpora una nueva API que les permite definir sus Tarjetas de Configuración rápida para permitir que los usuarios accedan fácilmente a las acciones y los controles clave de tu app

Los mosaicos de Configuración rápida se reservan para controles o acciones que: son urgentes o se usan con frecuencia; no deben usarse como atajos para iniciar una app.

Una vez que hayas definido tus tarjetas, puedes dejarlas a disposición de los usuarios, quienes podrán agregar a la Configuración rápida con solo arrastrarlas y soltarlas.

Para obtener información sobre cómo crear una tarjeta de aplicación, consulta la documentación de referencia para Tile.

Bloqueo de números

Android 7.0 ahora admite el bloqueo de números en la plataforma y proporciona un API de framework para permitir que los proveedores de servicios mantengan una lista de números bloqueados. El la aplicación de SMS predeterminada, la aplicación de teléfono predeterminada y las aplicaciones del operador pueden leer y escribir en la lista de números bloqueados. Otras apps no pueden acceder a la lista.

Al hacer que el bloqueo de números sea una función estándar de la plataforma, Android proporciona una forma coherente para que las apps admitan el bloqueo de números en una amplia gama de dispositivos. Entre los demás beneficios que pueden aprovechar las apps, se encuentran los siguientes:

  • Los números bloqueados en las llamadas también se bloquean en los mensajes de texto.
  • Los números bloqueados pueden persistir incluso después de un reinicio y varios dispositivos a través de la Copia de seguridad y Restablecer función
  • Varias apps pueden usar la misma lista de números bloqueados.

Además, la integración de apps de operadores con Android permite leer la lista de números bloqueados del dispositivo y realizar un bloqueo del servicio para el usuario con el fin de evitar que le lleguen llamadas y mensajes de texto no deseados a través de cualquier medio, como un endpoint VoIP o teléfonos de desvío de llamadas.

Para obtener más información, consulta la documentación de referencia de BlockedNumberContract

Filtración de llamadas

Android 7.0 permite que la app predeterminada de un teléfono filtre las llamadas entrantes. El teléfono lo hace implementando el nuevo CallScreeningService, que permite a la aplicación del teléfono realizar diversas acciones en función de un Call.Details de la llamada entrante, por ejemplo:

  • rechazar la llamada entrante;
  • no permitir el ingreso de la llamada en el registro de llamadas;
  • no mostrar al usuario una notificación de la llamada.

Para obtener más información, consulta la documentación de referencia de CallScreeningService

Compatibilidad con varias configuraciones regionales y más idiomas

Android 7.0 ahora permite a los usuarios seleccionar varias configuraciones regionales en Configuración. para admitir mejor casos de uso bilingües. Las apps pueden usar una nueva API para obtener las configuraciones regionales seleccionadas del usuario y luego ofrecer experiencias para los usuarios que usan varias configuraciones regionales, como mostrar resultados de la búsqueda en varios idiomas y no ofrecer la traducción de páginas web a un idioma que que el usuario ya conoce.

Además de la compatibilidad con varias configuraciones regionales, Android 7.0 también amplía la variedad de idiomas disponibles para los usuarios. Ofrece más de 25 variantes, cada una de ellas, de uso frecuente idiomas como inglés, español, francés y árabe. También se agregan parciales compatibilidad con más de 100 idiomas nuevos.

Las apps pueden obtener la lista de configuraciones regionales establecida por el usuario llamando LocaleList.GetDefault() Para admitir la cantidad ampliada de configuraciones regionales, Android 7.0 es cambiando la forma en que resuelve los recursos. Asegúrate de probar y verificar que tus apps como se espera con la nueva lógica de resolución de recursos.

Para conocer el nuevo comportamiento de resolución de recursos y las prácticas recomendadas consulta Compatibilidad con varios idiomas.

Nuevos emojis

Android 7.0 presenta más emojis y funciones relacionadas con emojis, como las siguientes: emojis con tonos de piel y compatibilidad con variaciones selectores. Si la aplicación admite emojis, sigue los lineamientos que se indican a continuación para aprovechar estas funciones relacionadas con emojis.

  • Comprueba que el dispositivo contenga un emoji antes de insertarlo. Para ver qué emojis tiene fuente del sistema, usa el método hasGlyph(String).
  • Comprueba que un emoji admita selectores de variación. Los selectores de variación te permiten presentar determinados emojis en color o en blanco y negro. En los dispositivos móviles, las apps deben representar los emojis en color en lugar de hacerlo en blanco y negro. Sin embargo, si tu aplicación muestra los emojis intercalados con el texto, debe usar la variación de blanco y negro. A fin de determinar si un emoji tiene una variación, usa el selector de variación. Para obtener una lista completa de caracteres con variaciones, revisa la secuencias de variación de emojis de la Documentación de Unicode sobre las variantes.
  • Comprueba que el emoji sea compatible con el tono de piel. Android 7.0 permite a los usuarios modificar la el tono de piel renderizado de los emojis según su preferencia. Las apps de teclado deben brindar imágenes indicaciones para emojis que tienen varios tonos de piel y que deberían permitir a los usuarios seleccionar el tono de piel que prefieran. Para determinar qué emojis del sistema tienen modificadores de tono de piel, usa el hasGlyph(String) . Puedes determinar qué emojis usan tonos de piel leyendo el Documentación de Unicode

Las ICU4J API en Android

Android 7.0 ahora ofrece un subconjunto de APIs de ICU4J en el framework de Android, en el paquete android.icu. La migración es sencilla y suele implicar si solo cambias del espacio de nombres com.java.icu a android.icu Si ya usas un paquete de ICU4J en tu cambiando a las APIs de android.icu que se proporcionan en la biblioteca puede reducir considerablemente el tamaño del APK.

Para obtener más información sobre las APIs de ICU4J para Android, consulta Compatibilidad con ICU4J.

WebView

Chrome + WebView, juntos

A partir de la versión 51 de Chrome en Android 7.0 y versiones posteriores, el APK de Chrome en tu dispositivo se usa para proporcionar y renderizar WebViews del sistema Android. Este enfoque mejora la memoria en el dispositivo y también reduce el ancho de banda necesario para mantener WebView actualizado (ya no se actualizará el APK de WebView independiente) siempre que Chrome permanezca habilitado).

Para elegir tu proveedor de WebView, habilita Opciones para desarrolladores y Selecciona Implementación de WebView. Puedes usar cualquier dispositivo compatible La versión de Chrome (Dev, Beta o estable) que está instalada en tu dispositivo APK de WebView independiente para que funcione como la implementación de WebView.

Multiproceso

A partir de Chrome 51 en Android 7.0, WebView ejecutará el contenido web en una proceso separado de zona de pruebas cuando la opción para desarrolladores "Multiprocess WebView" esté habilitado.

Deseamos obtener comentarios sobre la compatibilidad y el rendimiento del tiempo de ejecución en N antes de habilitar multiproceso WebView en una versión futura de Android. En este versión, regresiones en el tiempo de inicio, uso total de memoria y software el rendimiento de la renderización.

Si encuentras problemas inesperados en el modo de multiprocesos, quisiéramos de ellos. Comunícate con el equipo de WebView por medio del registro de errores de Chromium.

Ejecución de Javascript antes de la carga de página

A partir de las apps orientadas a Android 7.0, se restablecerá el contexto de JavaScript. cuando se carga una nueva página. Actualmente, se transfiere el contexto de las primera página cargada en una nueva instancia de WebView.

Los desarrolladores que quieran inyectar JavaScript en WebView deberían ejecutar la secuencia de comandos una vez que la página haya comenzado a cargar.

Ubicación geográfica en orígenes inseguros

Comenzando por las aplicaciones orientadas a Android 7.0, la API de ubicación geográfica solo se permitidos en orígenes seguros (a través de HTTPS). Esta política se diseñó para proteger información privada de los usuarios cuando usan una conexión no segura.

Pruebas con WebView Beta

WebView se actualiza con regularidad, por lo que te recomendamos que pruebes la compatibilidad. con tu app a menudo a través del canal beta de WebView. Para comenzar a realizar pruebas versiones previas al lanzamiento de WebView en Android 7.0, descarga e instala Chrome Dev o Chrome Beta, y seleccionarlo como la implementación de WebView en para desarrolladores, tal como se describió anteriormente. Informa los problemas por medio del Chromium de la herramienta de seguimiento de errores para que podamos corregirlos antes de que se implemente lanzamiento.

API de OpenGLTM ES 3.2

En Android 7.0, se agregan interfaces de framework y compatibilidad de plataforma para OpenGL ES 3.2. Se incluye lo siguiente:

  • Todas las extensiones de Paquete de extensiones de Android (AEP), excepto EXT_texture_sRGB_decode
  • búferes de fotogramas de punto flotante para HDR y sombreado aplazado;
  • llamadas a draw a través de BaseVertex para mejorar el procesamiento por lotes y la transmisión;
  • sólido control de acceso a búfer para reducir la sobrecarga de WebGL.

En Android 7.0, la API de framework para OpenGL ES 3.2 se proporciona con el Clase GLES32. Al usar OpenGL ES 3.2, asegúrate de declarar el en tu archivo de manifiesto con la etiqueta <uses-feature> y el atributo android:glEsVersion.

Para obtener información sobre el uso de OpenGL ES, incluida la manera de comprobar la conexión del dispositivo versión de OpenGL ES compatible durante el tiempo de ejecución, consulta la guía de la API OpenGL ES.

Grabación de Android TV

Android 7.0 agrega la capacidad de grabar y reproducir contenido desde la entrada de Android TV servicios mediante nuevas APIs de grabación. Cómo aprovechar la pausa en directo existente Los servicios de entrada de TV controlan qué datos de canales se pueden grabar, cómo se guardan las sesiones grabadas y se administra la interacción de los usuarios con el contenido grabado.

Para obtener más información, consulta APIs de grabación de Android TV.

Android for Work

Android for Work incorpora muchas funciones y API nuevas para dispositivos con Android 7.0. A continuación, se incluyen algunos aspectos destacados; para obtener una lista completa de las funciones, consulta Función de Android Enterprise lista.

Comprobación de seguridad para perfiles de trabajo

Propietarios de perfiles orientados al SDK de N puede especificar una comprobación de seguridad independiente para las apps que se ejecutan en el perfil de trabajo. La comprobación de trabajo se muestra cuando un usuario intenta abrir para cualquier app de trabajo. Completar con éxito el desafío de seguridad desbloquea el tu perfil de trabajo y lo desencripta si es necesario. Para los propietarios de perfiles, ACTION_SET_NEW_PASSWORD solicita al usuario que configure un trabajo desafío y ACTION_SET_NEW_PARENT_PROFILE_PASSWORD mensajes que el usuario configure un bloqueo de dispositivo.

Los propietarios de perfiles pueden establecer políticas de contraseñas distintas para el desafío de trabajo. (por ejemplo, la longitud del PIN o si se puede usar una huella dactilar para desbloquear el perfil) con setPasswordQuality(), setPasswordMinimumLength() y los métodos relacionados El perfil El propietario también puede establecer el bloqueo del dispositivo con el DevicePolicyManager. que muestra el nuevo método getParentProfileInstance(). Además, los propietarios de perfiles pueden personalizar la pantalla de credenciales del desafío de trabajo con el nuevo setOrganizationColor() y setOrganizationName().

Desactive el perfil de trabajo

En dispositivos con perfil de trabajo, los usuarios pueden alternar el modo de trabajo. Cuando el modo de trabajo está del usuario administrado se desactiva temporalmente, lo que inhabilita el perfil de trabajo apps, sincronización en segundo plano y notificaciones. Esto incluye al propietario del perfil y mantener la integridad de su aplicación. Cuando el modo de trabajo está desactivado, el sistema muestra un estado persistente para recordarle que no puede iniciar apps de trabajo. El selector indica que no se puede acceder a apps ni widgets de trabajo.

Always on VPN

Los propietarios de dispositivos y perfiles pueden asegurarse de que las apps de trabajo siempre se conecten. a través de una VPN especificada. El sistema inicia automáticamente la VPN se inicia el dispositivo.

Los nuevos métodos DevicePolicyManager son setAlwaysOnVpnPackage() y getAlwaysOnVpnPackage()

Porque el sistema puede vincular directamente los servicios de VPN sin una app los clientes de VPN deben administrar nuevos puntos de entrada para VPN siempre activada. Como antes, los servicios se indican al sistema con una coincidencia de filtro de intents acción android.net.VpnService.

Los usuarios también pueden configurar manualmente clientes VPN siempre activados que implementen VPNService métodos que usan Configuración > Más > VPN. La opción para habilitar VPN siempre activada en Configuración solo está disponible si el cliente de VPN tiene como objetivo el nivel de API 24.

Aprovisionamiento personalizado

Una aplicación puede personalizar el aprovisionamiento del propietario del perfil y del propietario del dispositivo fluye con colores y logotipos corporativos. DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR personalización color de flujo. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI personaliza el flujo con un logotipo corporativo.

Mejoras de accesibilidad

Android 7.0 ahora ofrece Vision Settings directamente en la pantalla de bienvenida para nuevos la configuración del dispositivo. Esto permite que los usuarios descubran y configuren funciones de accesibilidad en sus dispositivos, como el gesto de ampliación, la fuente el tamaño de la pantalla y TalkBack.

Con estas funciones de accesibilidad una posición más destacada, los usuarios tienen más probabilidades de probar la app con ellos habilitados. Asegúrate de probar tus apps con estos parámetros de configuración habilitados. Puedes habilitarlas en Configuración > Accesibilidad.

Además, en Android 7.0, los servicios de accesibilidad ahora pueden ayudar a los usuarios con deficiencias al tocar la pantalla. La nueva API permite crear servicios con funciones como seguimiento facial, ocular, escaneo puntual, etc., para satisfacer las necesidades de esos usuarios.

Para obtener más información, consulta la documentación de referencia de GestureDescription

Inicio directo

El inicio directo mejora los tiempos de inicio del dispositivo y permite Las apps tienen una funcionalidad limitada, incluso después de un reinicio inesperado. Por ejemplo, si un dispositivo encriptado se reinicia mientras el usuario duerme, Las alarmas, los mensajes y las llamadas entrantes registrados ahora pueden seguir recibiendo notificaciones al usuario como de costumbre. Esto también significa que los servicios de accesibilidad también pueden disponible inmediatamente después de un reinicio.

El inicio directo aprovecha la encriptación basada en archivos en Android 7.0 con el fin de habilitar políticas de encriptación detalladas para los datos del sistema y de la app. El sistema usa un almacén encriptado por dispositivo para determinados datos del sistema y datos de apps registrados. De forma predeterminada, se usa un almacén encriptado con credenciales otros datos del sistema, datos del usuario, apps y datos de apps.

En el inicio, el sistema se inicia en un modo restringido con acceso a solo para datos encriptados por el dispositivo y sin acceso general a apps o datos. Si tienes componentes que quieres ejecutar en este modo, puedes registrar estableciendo una marca en el manifiesto. Después del reinicio, el sistema se activa componentes registrados transmitiendo el LOCKED_BOOT_COMPLETED . El sistema garantiza que estén disponibles los datos de apps encriptados por el dispositivo antes de desbloquear. Todos los demás datos no estarán disponibles hasta que el usuario confirme su bloqueo las credenciales de la pantalla para desencriptarlo.

Para obtener más información, consulta Inicio directo.

Certificación de claves

Android 7.0 presenta la certificación de claves, una nueva herramienta de seguridad que ayuda a te aseguras de que los pares de claves almacenadas en la copia de seguridad en hardware del dispositivo almacén de claves protegen la información sensible que tu app que la API usa. Si usas esta herramienta, tienes más confianza en que tu app interactúa con las claves que se encuentran en hardware seguro, incluso si el dispositivo cuando ejecutas tu app tiene permisos de administrador. Si usas claves del almacén de claves guardadas en hardware en tus apps, debes usar esta herramienta, sobre todo si usas las claves para verificar información sensible en tu app.

La certificación de claves permite verificar que se haya utilizado un par de claves RSA o EC. crearse y almacenarse en el almacén de claves guardadas en hardware de un dispositivo dentro del entorno de ejecución confiable (TEE). La herramienta también te permite usar fuera del dispositivo, como el servidor de backend de tu app, para determinar y verificar rigurosamente los usos y la validez del par de claves. Estas funciones ofrecen un nivel de seguridad adicional que protege el par de claves, incluso si hace que el dispositivo tenga permisos de administrador o pone en riesgo la seguridad de la plataforma de Android que se ejecuta en el dispositivo.

Nota: Solo una pequeña cantidad de dispositivos con Android 7.0 compatibilidad con certificación de claves a nivel de hardware, Todos los demás dispositivos con Android 7.0 usa certificación de claves a nivel del software. Antes de verificar las propiedades de las claves guardadas en hardware de un dispositivo en un entorno de producción, el dispositivo debe ser compatible con la certificación de claves a nivel del hardware. Para para hacerlo, debes comprobar que la cadena de atestación contenga una raíz certificado firmado por la clave raíz de certificación de Google y que Elemento attestationSecurityLevel en la clave description [descripción] se establece en la política de seguridad de TrustedEnvironment a nivel de organización.

Para obtener más información, consulta la Certificación de claves documentación para desarrolladores.

Configuración de seguridad de la red

En Android 7.0, las apps pueden personalizar el comportamiento de su seguridad (HTTPS, TLS) de forma segura, sin modificar el código, Configuración de seguridad de la red en vez de usar la APIs programáticas propensas a errores (p.ej., X509TrustManager).

Funciones admitidas:

  • Anclas de confianza personalizadas. Permite personalizar qué aplicación Las autoridades certificadoras (AC) son de confianza por sus conexiones de seguridad. Para por ejemplo, confiar en certificados autofirmados particulares o un conjunto restringido de AC públicas.
  • Anulaciones de solo depuración. Permite que el desarrollador de aplicaciones depure de forma segura conexiones seguras de sus aplicaciones sin riesgos adicionales base.
  • Inhabilitación de tráfico de texto simple. Permite que una aplicación se proteja a sí misma de uso accidental del tráfico de texto simple.
  • Fijación de certificados: Una función avanzada que permite que una aplicación limita las claves de servidor en las que se confía para conexiones seguras.

Para obtener más información, consulta Configuración de seguridad de red.

Entidad de certificación de confianza predeterminada

De forma predeterminada, las apps orientadas a Android 7.0 solo confían en los certificados proporcionados por el sistema. y ya no confiar en las autoridades certificadoras (AC) agregadas por el usuario. Apps orientadas a Android 7.0 (nivel de API 24) que deseen confiar en AC agregadas por usuarios deben usar el Configuración de seguridad de red especificar cómo se debe confiar en las AC del usuario.

Esquema de firma de APK v2

Android 7.0 presenta el esquema de firma de APK v2, un nuevo esquema de firma de apps que ofrece tiempos de instalación más rápidos de las apps y mayor protección contra los ataques no autorizados alteraciones de los archivos APK. De forma predeterminada, Android Studio 2.2 y la El complemento para Gradle 2.2 firma tu app con el esquema de firma de APK v2 y el esquema de firma tradicional, que usa la firma JAR.

Si bien recomendamos aplicar el esquema de firma de APK v2 a tu app, este nuevo no es obligatorio. Si la app no se compila correctamente al usar el APK Signature Scheme v2, puedes inhabilitar el esquema nuevo. El proceso de inhabilitación hace que Android Studio 2.2 y el complemento de Android para Gradle 2.2 firmen tu app con el esquema de firma tradicional. Para firmar solo con el esquema tradicional, abre el archivo build.gradle a nivel del módulo y, luego, agrega la línea v2SigningEnabled false a la firma de la versión. actual:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

Precaución: Si firmas la app con un APK Esquema de firma v2 y realizar más cambios en la app, la firma se invalida. Por este motivo, usa herramientas como zipalign. antes de firmar la app con el esquema de firma de APK v2, y no después.

Para obtener más información, lee los documentos de Android Studio que describen cómo hacer lo siguiente: firma una app en Android Studio y descubre cómo configurar el archivo de compilación para firmar apps con el complemento de Android para Gradle.

Acceso a directorios determinados

En Android 7.0, las apps pueden usar nuevas APIs para solicitar acceso a recursos externos Storage, incluidos los directorios de medios extraíbles, como SD tarjetas. Las nuevas APIs simplifican en gran medida la forma en que tu aplicación accede directorios de almacenamiento externo, como Pictures. Aplicaciones como las de fotos, pueden usar estas APIs en lugar de usar READ_EXTERNAL_STORAGE, que otorga acceso a todo el almacenamiento directorios, o el framework de acceso al almacenamiento, que hace que el usuario navegue directorio.

Además, las nuevas APIs simplifican los pasos que debe seguir un usuario para otorgar acceso el almacenamiento de tu app. Cuando usas las nuevas APIs, el sistema usa un de permisos que detalla claramente el directorio en el que se encuentra la aplicación solicitando acceso.

Para obtener más información, consulta la Con alcance Acceso a directorios para desarrolladores.

Ayuda en las combinaciones de teclas

En Android 7.0, el usuario puede presionar Meta + / para activar una La pantalla Combinaciones de teclas que muestra todas las combinaciones de teclas disponibles del sistema y de la aplicación en primer plano. El sistema recupera estos desde el menú de la app si existen. Puedes también proporcionar tus propias listas de accesos directos más precisos para la pantalla. Puedes hacer lo siguiente: esto anulando el método onProvideKeyboardShortcuts().

Nota: La tecla Meta no está presente en todos los teclados: en los teclados Macintosh, es la tecla Command, en el teclado de Windows, es la tecla Windows, y en la En los teclados de ChromeOS y Pixel C, es la tecla de Búsqueda.

Para activar la ayuda de Combinaciones de teclas desde cualquier parte de la app, llama requestShowKeyboardShortcuts() de la actividad relevante.

Custom Pointer API

Android 7.0 presenta la API de puntero personalizado, que te permite personalizar la el aspecto, la visibilidad y el comportamiento del puntero. Esta función es especialmente útil cuando un usuario utiliza un mouse o un panel táctil para interactuar con objetos de IU. El puntero predeterminado usa un ícono estándar. Esta API también incluye funcionalidades avanzadas, como cambiar la apariencia del ícono del puntero según con movimientos específicos del mouse o del panel táctil.

Para configurar un ícono de puntero, anula onResolvePointerIcon() de la clase View. Este método usa un PointerIcon para dibujar el ícono que corresponde a un evento de movimiento específico.

Sustained Performance API

El rendimiento puede fluctuar considerablemente en las aplicaciones de ejecución prolongada, ya que la el sistema limita los motores de sistema en chip cuando los componentes del dispositivo límites de temperatura. Esta fluctuación presenta un objetivo móvil para las aplicaciones desarrolladores a crear apps de alto rendimiento y ejecución prolongada.

Para abordar estas limitaciones, Android 7.0 admite lo siguiente: modo de rendimiento sostenido, lo que permite que los OEM proporcionen sugerencias de rendimiento del dispositivo para apps de larga duración. Desarrolladores de apps puedes usar estas sugerencias para ajustar las apps de rendimiento del dispositivo durante períodos extensos.

Los desarrolladores de aplicaciones pueden probar esta nueva API en Android 7.0 en Solo para dispositivos Nexus 6P. Para usar esta función, establece la marca de período de rendimiento sostenido para la ventana. antes de ejecutarlo en el modo de rendimiento sostenido. Establece esta marca con el Window.setSustainedPerformanceMode(). El sistema automáticamente inhabilita este modo cuando la ventana ya no está enfocada.

Compatibilidad RV

Android 7.0 agrega compatibilidad y optimizaciones de plataforma para un modo de RV nuevo que permite a los desarrolladores crear experiencias de RV móvil de alta calidad para los usuarios. Hay varias etapas de implementación mejoras, como el acceso a un núcleo de CPU exclusivo para apps de RV. Dentro de tus aplicaciones, puedes aprovechar el seguimiento inteligente de la cabeza, y estéreo que funcionan para RV. Lo más importante es que Android 7.0 proporciona gráficos de muy baja latencia. Para obtener información completa sobre cómo crear apps de RV para Android 7.0, consulta lo siguiente: consulta el SDK de RV de Google para Android.

En Android 7.0, los desarrolladores de servicios de impresión ahora pueden mostrar información adicional sobre impresoras y trabajos de impresión individuales.

Al enumerar las impresoras individuales, ahora se puede establecer un servicio de impresión por impresora íconos de dos maneras:

Además, puedes ofrecer una actividad por impresora para mostrar más información llamando a setInfoIntent().

Puedes indicar el progreso y el estado de los trabajos de impresión en el trabajo de impresión notificación llamando setProgress() y setStatus(), respectivamente.

API de Frame Metrics

La API de Frame Metrics permite que una app supervise la renderización de la IU rendimiento. La API proporciona esta capacidad a través de la exposición de una transmisión de API de Pub/Sub para transferir información de sincronización para la ventana actual de la app. Los datos devueltos tienen equivalente a la que muestra adb shell dumpsys gfxinfo framestats, pero no se limita a los últimos 120 fotogramas.

Puedes usar la API de Frame Metrics para medir la IU del nivel de interacción rendimiento en producción, sin una conexión USB. Esta API permite recopilar datos con un nivel de detalle mucho mayor adb shell dumpsys gfxinfo Este nivel de detalle más alto es posible porque El sistema puede recopilar datos para interacciones particulares en la aplicación. el sistema no necesitan capturar un resumen global de todos los el rendimiento o borrar cualquier estado global. Puedes usar esta Capacidad para recopilar datos de rendimiento e identificar regresiones en el rendimiento de la IU para casos de uso reales dentro de una app.

Para supervisar una ventana, implementa OnFrameMetricsAvailableListener.onFrameMetricsAvailable() de devolución de llamada y registrarlo en esa ventana.

La API proporciona un objeto FrameMetrics, que contiene datos de tiempo que informa el subsistema de renderización de varios hitos en el ciclo de vida de un fotograma. Las métricas admitidas son las siguientes: UNKNOWN_DELAY_DURATION, INPUT_HANDLING_DURATION, ANIMATION_DURATION LAYOUT_MEASURE_DURATION, DRAW_DURATION, SYNC_DURATION, COMMAND_ISSUE_DURATION, SWAP_BUFFERS_DURATION, TOTAL_DURATION y FIRST_DRAW_FRAME.

Archivos virtuales

En versiones anteriores de Android, tu app podía usar la API de Storage Access Framework que permite a los usuarios seleccionar archivos de sus cuentas de almacenamiento en la nube como Google Drive. Sin embargo, no había forma de representar los archivos no tienen una representación directa en código de bytes; todos los archivos debían proporcionar un flujo de entrada.

Android 7.0 incorpora el concepto de archivos virtuales al espacio de acceso al almacenamiento. de Google Cloud. La función de archivos virtuales permite que tus DocumentsProvider para mostrar los URI de documentos que se pueden usarse con un intent ACTION_VIEW incluso si pero no tienen una representación directa en código de bytes. Android 7.0 también te permite proporcionar formatos alternativos para archivos del usuario, virtuales o de otro tipo.

Para obtener más información sobre cómo abrir archivos virtuales, consulta Abre archivos virtuales en la Guía de Frameworks de acceso a almacenamiento