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.
Si deseas obtener más información sobre las funciones de Android 7.0 para consumidores, 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. Los usuarios pueden modificar el tamaño de las apps arrastrando la línea divisoria que se encuentra 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.
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. Puedes, incluso, habilitar acciones de arrastrar y soltar en tu app para que los usuarios arrastren contenido hacia o desde ella de manera práctica; es una excelente manera de mejorar su experiencia.
Es sencillo agregar compatibilidad con ventanas múltiples a tu app y configurar la manera en que 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 facilitar y agilizar su uso. 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 de los mensajes: Puedes personalizar más etiquetas de la interfaz de usuario asociadas con tus notificaciones usando la 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 aplicar acciones, como Dismiss o Archive, en ellos. 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.
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 compilador Ahead of Time (AOT) actual de ART y permite mejorar el rendimiento del tiempo de ejecución, ahorrar espacio de almacenamiento y acelerar las actualizaciones de las 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 en proceso de carga, lo cual permite ahorrar tiempo y batería haciendo el trabajo de manera anticipada.
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, el modo Descanso ofrece el beneficio adicional de ahorrar batería sobre la marcha. Siempre que la pantalla permanezca apagada durante un tiempo y el dispositivo esté desenchufado, el modo Descanso aplicará a las apps un subconjunto de las restricciones de CPU y red conocidas. Esto significa que los usuarios pueden ahorrar batería incluso cuando llevan sus dispositivos en su bolsillos.
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, energía y conectividad. JobScheduler ofrece control y
sencillez, y nuestro deseo es que se use en todas las apps.
Otra buena opción es GCMNetworkManager
, que forma parte de los Servicios de Google Play y ofrece una programación de tareas similar con compatibilidad en 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, comenzaremos a dejar de usar algunos de los patrones anteriores que pueden reducir el rendimiento del sistema, en especial, 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
.
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 mucho ahorrar batería usando SurfaceView
en lugar de TextureView
.
Ahorro de datos
Durante la vida útil de un dispositivo móvil, el costo de un plan de datos móviles suele superar el costo del propio dispositivo. Para muchos usuarios, los datos móviles son recurso costoso que quieren conservar.
En Android 7.0, se presenta el modo de ahorro de datos, un nuevo servicio del sistema que permite reducir el uso de datos móviles de las apps, ya sea con itinerancia, cerca del final del ciclo de facturación o con un pequeño paquete de datos prepagos. 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ó el ahorro de datos y hacer todo lo posible 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. Entre ellos, se incluyen los siguientes:
- 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
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 Quick Settings para que sea aún más útil y práctico.
Agregamos más espacio para mosaicos adicionales de Quick Settings, a los cuales los usuarios pueden acceder desde 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 mostrarlas a los usuarios, quienes podrán agregarlas a Quick Settings 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 perdurar tras procesos de restablecimiento y 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 proveedores a través de Android permite que estos lean la lista de números bloqueados del dispositivo y realicen un bloqueo de servicio para el usuario, a fin de evitar que este reciba llamadas y mensajes de texto no deseados por cualquier medio, como terminales VOIP o teléfonos con transferencia 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. La app de teléfono hace esto a través de la implementación del nuevo CallScreeningService
, que le permite realizar varias acciones según el Call.Details
de una llamada entrante, como las siguientes:
- 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 ofrecerse la compatibilidad con varias configuraciones regionales, en Android 7.0 también se 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 a 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 controlar que tus apps funcionen de la manera esperada 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 que los usuarios modifiquen el tono de piel presentado 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 la documentación de Unicode.
Las ICU4J API en Android
Android 7.0 ahora ofrece un subconjunto de las 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 en el 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 OpenGL™ 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 del 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 diferentes para la comprobación de seguridad de trabajo (por ejemplo, la extensión que debe tener el PIN o la posibilidad de usar una huella dactilar para desbloquear el perfil) usando setPasswordQuality()
, setPasswordMinimumLength()
y 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, en el sistema se muestra un ícono de estado persistente para recordar al usuario 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. Al igual que antes, los servicios se indican al sistema con una clase de acción de coincidencia de filtro de intents 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 a los usuarios descubrir y configurar de manera mucho más sencilla funciones de accesibilidad en sus dispositivos, como el gesto de ampliación, el tamaño de fuente, el tamaño de 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 depósito encriptado con credenciales para los datos de sistema, los datos de usuario, las apps y los datos de apps restantes.
Durante el inicio, el sistema se inicia en un modo restringido con acceso únicamente a 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. No es posible acceder a los demás datos hasta que el usuario confirme sus credenciales de pantalla de bloqueo para descifrarlos.
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. Por medio de esta herramienta, tendrás mayores garantías de que tu app interactúe con claves que residan en un hardware seguro, incluso cuando se acceda a derechos administrativos en el dispositivo que ejecute tu app. Si usas claves del depósito de claves guardadas en hardware en tus apps, debes usar esta herramienta, en especial si usas las claves para verificar información sensible dentro de 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 unos pocos dispositivos con Android 7.0 admiten atestación de claves a nivel de hardware; en todos los demás dispositivos con Android 7.0 se usa atestación de claves a nivel de 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:
- Anclajes de confianza personalizados. 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 el complemento de Android para Gradle 2.2 firman tu app con el esquema de firma de APK v2 y el esquema de firma tradicional, que usa la firma JAR.
Aunque recomendamos que implementes el esquema de firma de APK v2 en tu app, este esquema 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 directorios de almacenamiento externo específicos, incluidos los directorios de medios extraíbles, como las tarjetas SD. 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 pantalla de combinaciones de teclas en la que se muestran todas las combinaciones de teclas disponibles, tanto en el sistema como en la app que esté en foco. 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 ubicación de la app, llama a requestShowKeyboardShortcuts()
desde 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 objeto 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 incluye compatibilidad con el modo de rendimiento sostenido, lo que permite que los OEM proporcionen sugerencias sobre las capacidades de rendimiento del dispositivo para apps de ejecución prolongada. 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 el indicador de rendimiento sostenido de la ventana que deseas ejecutar 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. Un dato muy importante es que Android 7.0 admite gráficos de latencia muy baja. 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.
Mejoras en el servicio de impresión
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:
- Para configurar un ícono desde el ID de un recurso, llama a
setIconResourceId()
- Puedes mostrar un ícono de la red llamando a
setHasCustomPrinterIcon()
, y configurar una devolución de llamada para cuando se solicite el ícono usandoonRequestCustomPrinterIcon()
Además, puedes proporcionar las actividades por impresora para mostrar información adicional 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
función para recopilar datos de rendimiento y detectar 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 tu DocumentsProvider
devuelva URIs de documentos que se pueden usar con un intent ACTION_VIEW
, incluso si 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