Android 10 para desarrolladores

Se compiló Android 10 sobre la base de tres temas importantes. En primer lugar, Android 10 está dando forma a la vanguardia de la innovación en dispositivos móviles con el aprendizaje automático avanzado y la compatibilidad con dispositivos emergentes, como dispositivos plegables y teléfonos compatibles con 5G. Además, Android 10 se enfoca en la privacidad y la seguridad, con casi 50 funciones que brindan a los usuarios mayor protección, transparencia y control. Por último, Android 10 expande los controles de bienestar digital de los usuarios para que las personas y las familias puedan encontrar un mejor equilibrio con la tecnología.

A continuación, te mostramos lo que hay en Android 10 para desarrolladores y cómo puedes usarlo hoy.

Innovación y nuevas experiencias

Con Android 10, puedes aprovechar las innovaciones más recientes de hardware y software para crear experiencias de apps asombrosas para los usuarios.

Con Android 10, puedes optimizar tus apps para dispositivos plegables y otros dispositivos con pantalla grande.

Dispositivos plegables

Basado en una compatibilidad sólida con el modo multiventana, Android 10 extiende la realización de varias tareas a la vez en las ventanas de la app y proporciona continuidad de pantalla para mantener el estado de la app a medida que el dispositivo se pliega o se despliega. En Android 10, se agregan varias mejoras en onResume y onPause para admitir la reanudación múltiple y notificar a tu app cuando está enfocada. También cambia la manera en que funciona el atributo del manifiesto resizeableActivity para ayudarte a administrar cómo se muestra tu app en pantallas grandes y plegables. Para ayudarte a compilar contenido para dispositivos plegables, puedes configurar un emulador de dispositivos plegables como dispositivo virtual (AVD) en Android Studio. Si quieres obtener detalles sobre cómo optimizar tus apps para dispositivos plegables, consulta la guía para desarrolladores.

Redes 5G

Las redes 5G prometen ofrecer velocidades más rápidas y una latencia más baja de forma constante. Android 10 agrega compatibilidad de plataforma con 5G y extiende las APIs existentes para ayudarte a aprovechar estas mejoras. Puedes usar las APIs de conectividad para detectar si el dispositivo tiene una conexión de ancho de banda alto y verificar si la conexión es de uso medido. De esta manera, tus apps y juegos pueden personalizar experiencias envolventes y enriquecidas para los usuarios mediante 5G.

Respuesta inteligente en notificaciones

Android 10 usa el AA en el dispositivo para sugerir acciones contextuales en notificaciones, como respuestas inteligentes para mensajes o abrir el mapa de una dirección en la notificación. Las apps pueden aprovechar esta función de inmediato, sin necesidad de realizar ninguna acción. Las acciones y respuestas inteligentes proporcionadas por el sistema se insertan directamente en las notificaciones de forma predeterminada. Puedes proporcionar tus propias respuestas y acciones si lo deseas. Solo debes inhabilitar Respuesta inteligente por cada notificación mediante setAllowGeneratedReplies() y setAllowSystemGeneratedContextualActions().

La Respuesta inteligente puede sugerir acciones en función del contenido de la notificación.

Tema oscuro

Android 10 agrega un tema oscuro para todo el sistema que es ideal para poca luz y ayuda a ahorrar batería. Los usuarios pueden activar un nuevo tema oscuro para todo el sistema desde Configuración o con el Ahorro de batería. Esta acción cambia la IU del sistema a oscuro y habilita el tema oscuro de las apps que lo admiten. Puedes compilar un tema oscuro personalizado para tu app o habilitar una nueva función Forzar oscuro que le permita al sistema crear de forma dinámica una versión oscura a partir del tema existente. Es posible que también quieras aprovechar la función DayNight de AppCompat para ofrecer un tema oscuro a los usuarios en versiones anteriores de Android. Si deseas obtener más información, consulta la guía para desarrolladores.

Android 10 puede crear un tema oscuro para tu app de forma dinámica con la función Forzar oscuro.

Navegación por gestos

La navegación por gestos les brinda a las apps la pantalla completa para el contenido.

Android 10 introduce un modo de navegación totalmente gestual que elimina el área de la barra de navegación y permite que las apps usen la pantalla completa para ofrecer experiencias más envolventes y enriquecidas. Conserva las opciones de navegación Atrás, Inicio y Recientes mediante deslizamientos desde los bordes en lugar de botones visibles. Para integrar la navegación por gestos a la perfección, debes dibujar de borde a borde y dibujar detrás de la barra de navegación para crear una experiencia envolvente. Para implementar esto, las apps deben usar la API de setSystemUiVisibility() en el modo de pantalla completa y, luego, controlar WindowInsets según corresponda para garantizar que las partes importantes de la IU no se oculten. Comienza a optimizar tu app hoy y consulta nuestra serie de entradas de blog para obtener más información.

Paneles de configuración

Ahora puedes mostrar los parámetros de configuración clave del sistema directamente en el contexto de tu app a través de una nueva API del panel de configuración. Un panel de configuración es una IU flotante que puedes invocar para mostrar parámetros de configuración que los usuarios podrían necesitar, como la conexión a Internet, NFC y el volumen del audio. Por ejemplo, un navegador podría mostrar un panel con la configuración de conectividad, como el modo de avión, Wi-Fi (incluidas las redes cercanas) y los datos móviles. Para mostrar este panel, solo debes activar un intent con una de las nuevas acciones de Settings.Panel.

Accesos directos de uso compartido

Los accesos directos de uso compartido hacen que compartir contenido sea más rápido y fácil, lo que permite a los usuarios saltar directamente a otra app para compartir contenido. Los desarrolladores pueden publicar objetivos de uso compartido que inicien una actividad específica en sus apps con contenido adjunto, y estos se mostrarán a los usuarios en la IU de uso compartido. Como se publican con anticipación, la IU para compartir se carga al instante cuando se inicia. Los accesos directos de uso compartido son similares a los accesos directos a aplicaciones y usan la misma API de ShortcutInfo. La API también es compatible con la biblioteca ShareTarget de AndroidX. Consulta la app de ejemplo para obtener más detalles.

Los accesos directos de uso compartido permiten a los usuarios saltar directamente a una actividad específica en tus apps con contenido adjunto.

Privacidad para los usuarios

La privacidad es un enfoque central en Android 10, desde protecciones más sólidas en la plataforma hasta funciones nuevas diseñadas teniendo en cuenta la privacidad. A partir de versiones anteriores, Android 10 incluye grandes cambios para proteger la privacidad y dar a los usuarios más control, con una IU del sistema mejorada, permisos más estrictos y restricciones sobre los datos que pueden usar las apps. Consulta los cambios en la privacidad para obtener información sobre cómo admitirlos en tus apps.

Los usuarios ahora pueden optar por otorgar acceso a la ubicación cuando la app está en primer plano.

Dar a los usuarios más control sobre los datos de ubicación: Los usuarios tienen más control sobre sus datos de ubicación mediante una nueva opción de permiso. Ahora pueden permitir que una app acceda a la ubicación solo mientras está en uso (se ejecuta en primer plano). Para la mayoría de las apps, esto proporciona un nivel de acceso suficiente, mientras que para los usuarios es una gran mejora en la transparencia y el control. Si deseas obtener más información sobre los cambios de ubicación, consulta la guía para desarrolladores o nuestra entrada de blog.

Protección de datos de ubicación en la búsqueda de redes: La mayoría de las APIs de análisis de redes ya requerían el permiso de ubicación aproximada. Android 10 aumenta la protección para esas APIs mediante la solicitud del permiso de ubicación precisa en su lugar.

Evita el rastreo de dispositivos: Las apps ya no pueden acceder a identificadores de dispositivos que no se pueden restablecer y que podrían usarse para el seguimiento, como el IMEI, el número de serie y otros identificadores similares del dispositivo. La dirección MAC del dispositivo también se aleatoriza cuando se conecta a redes Wi-Fi de forma predeterminada. Lee las prácticas recomendadas que te ayudarán a elegir los identificadores correctos para tu caso de uso y consulta los detalles aquí.

Protección de los datos del usuario en el almacenamiento externo: Android 10 introduce varios cambios para darles a los usuarios más control sobre los archivos del almacenamiento externo y los datos de las apps que contienen. Las apps pueden almacenar sus propios archivos en sus zonas de pruebas privadas, pero deben usar MediaStore para acceder a archivos multimedia compartidos y usar el selector de archivos del sistema para acceder a los archivos compartidos en la nueva colección Descargas. Obtén más información aquí.

Bloquea las interrupciones no deseadas: Android 10 evita que los inicios de apps en segundo plano se inicien de forma inesperada en primer plano y ocupen el foco de otra app. Obtén más información aquí.

Seguridad

Android 10 introduce varias funciones que protegen a los usuarios mediante avances en la encriptación, el endurecimiento de la plataforma y la autenticación. Obtén más información sobre las actualizaciones de seguridad de Android 10 aquí.

Encriptación del almacenamiento: Se requiere que todos los dispositivos compatibles que se lanzan con Android 10 encripten los datos del usuario. Para que este proceso sea más eficiente, Android 10 incluye Adiantum, nuestro nuevo modo de encriptación.

TLS 1.3 de forma predeterminada: Android 10 también habilita TLS 1.3 de forma predeterminada, que es una revisión importante del estándar TLS con beneficios de rendimiento y seguridad mejorada.

Endurecimiento de la plataforma: Android 10 también incluye el endurecimiento de varias áreas críticas de seguridad de la plataforma.

Datos biométricos mejorados: En Android 10, se extiende el framework BiometricPrompt para admitir métodos de autenticación pasivos, como el rostro, y agregar flujos de autenticación implícitos y explícitos. En el flujo explícito, el usuario debe confirmar de forma explícita la transacción en el TEE durante la autenticación. El flujo implícito está diseñado como una alternativa más ligera para transacciones con autenticación pasiva. Android 10 también mejora el resguardo de las credenciales del dispositivo cuando es necesario. Obtén más información aquí.

Cámara y contenido multimedia

Profundidad dinámica para fotos

Las apps ahora pueden solicitar una imagen de profundidad dinámica, que consiste en metadatos JPEG y XMP relacionados con elementos relacionados con la profundidad, y un mapa de profundidad y confianza incorporado en el mismo archivo. Estas te permiten ofrecer opciones de bokeh y desenfoques especializados en tu app. La profundidad dinámica es un formato abierto para el ecosistema y estamos trabajando con nuestros socios para incorporarlo en los dispositivos que ejecutan Android 10 y versiones posteriores.

Con la imagen de profundidad dinámica, puedes ofrecer opciones de bokeh y desenfoques especializadas en tu app.

Captura de reproducción de audio

Ahora cualquier app que reproduzca audio puede permitir que otras apps capturen la transmisión de audio mediante una nueva API de captura de reproducción de audio. Además de habilitar los subtítulos, la API te permite admitir casos de uso populares, como los juegos de transmisión en vivo. Desarrollamos esta nueva función teniendo en cuenta la privacidad y la protección de los derechos de autor, por lo que la capacidad de una app de capturar el audio de otra está restringida, lo que les da a las apps control total sobre si se pueden capturar o no sus transmisiones de audio. Obtén más información en esta entrada de blog.

Nuevos códecs de audio y video

En Android 10, se agrega compatibilidad con el códec de video de código abierto AV1, que permite a los proveedores de contenido multimedia transmitir contenido de video de alta calidad a dispositivos Android con menos ancho de banda. Además, Android 10 admite la codificación de audio con Opus (un códec abierto libre de regalías optimizado para la transmisión de música y voz) y HDR10+ para videos de alto rango dinámico en dispositivos compatibles. La API de MediaCodecInfo presenta una manera más fácil de determinar las capacidades de renderización de video de un dispositivo Android. Puedes obtener una lista de las velocidades de fotogramas y los tamaños admitidos para cualquier códec.

API de Native MIDI

En el caso de las apps que realizan el procesamiento de audio en C++, Android 10 introduce una API de MIDI nativa para comunicarse con dispositivos MIDI a través del NDK. Esta API permite que los datos MIDI se recuperen dentro de una devolución de llamada de audio mediante una lectura sin bloqueo, lo que permite el procesamiento de baja latencia de mensajes MIDI. Puedes probarlo en la app de ejemplo y en el código fuente aquí.

Micrófonos direccionales que se pueden acercar

Android 10 te brinda más control sobre la captura de audio mediante una nueva API de MicrófonoDirection. Puedes usar la API para especificar una dirección preferida del micrófono cuando se realiza una grabación de audio. Por ejemplo, cuando el usuario se graba a sí mismo, puedes solicitar que el micrófono frontal grabe el audio (si existe). Además, esta API presenta una forma estandarizada de controlar los micrófonos que se pueden acercar, lo que permite que tu app tenga el control sobre la dimensión del campo de grabación.

Vulkan en todas partes

En Android 10, se expande el impacto de Vulkan con nuestra implementación de la API multiplataforma de baja sobrecarga para gráficos 3D de alto rendimiento. Ahora, Vulkan 1.1 es un requisito para todos los dispositivos de 64 bits que ejecutan Android 10 y versiones posteriores, y se recomienda para todos los dispositivos de 32 bits. Ya vemos un impulso significativo en la compatibilidad de Vulkan en el ecosistema (entre los dispositivos que ejecutan Android N o versiones posteriores, el 53% admite Vulkan 1.0.3 o versiones posteriores). Con el nuevo requisito de Android 10, esperamos que la adopción mejore aún más el próximo año.

Conectividad

Conexión a Internet y entre pares mejorada

Refactorizamos la pila de Wi-Fi para mejorar la privacidad y el rendimiento, y también mejorar los casos prácticos comunes, como administrar dispositivos de la IoT y sugerir conexiones a Internet, sin requerir el permiso de ubicación. Las APIs de conexión de red facilitan la administración de dispositivos de la IoT en una conexión Wi-Fi local, para funciones entre pares, como la configuración, descarga o impresión. Las APIs de sugerencia de redes permiten que las apps ofrezcan redes Wi-Fi preferidas al usuario para la conectividad a Internet.

Modos de rendimiento de Wi-Fi

Las apps ahora pueden solicitar Wi-Fi adaptable mediante la habilitación de los modos de alto rendimiento y baja latencia. Estas pueden ser una gran ventaja cuando la baja latencia es importante para la experiencia del usuario, como los videojuegos en tiempo real, las llamadas de voz activas y casos de uso similares. La plataforma trabaja con el firmware del dispositivo para cumplir con los requisitos con el menor consumo de energía. Para usar los nuevos modos de rendimiento, llama a WifiManager.WifiLock.createWifiLock() con WIFI_MODE_FULL_LOW_LATENCY o WIFI_MODE_FULL_HIGH_PERF. En estos modos, la plataforma trabaja con el firmware del dispositivo para cumplir los requisitos con el consumo de energía más bajo.

Conceptos básicos de Android

Optimizaciones de ART

Las mejoras en el entorno de ejecución de ART ayudan a que tus apps se inicien más rápido, consuman menos memoria y funcionen con mayor fluidez (sin necesidad de que realices ninguna tarea). Los perfiles de ART que proporciona Google Play permiten que ART compile previamente partes de tu app incluso antes de que se ejecute. En el tiempo de ejecución, Android 10 agrega recolección generacional de elementos no utilizados al recolector de elementos no utilizados de copia simultánea (CC) de ART para que la recolección de elementos no utilizados sea más eficiente en términos de tiempo y CPU, reduce los bloqueos y ayuda a que las apps se ejecuten mejor en dispositivos de gama baja.

En este gráfico, se muestra la mejora del porcentaje en el tiempo de inicio de apps específicas cuando se prueban con perfiles de Play.

API de Neural Networks 1.2

Agregamos 60 operaciones nuevas, incluidas ARGMAX, ARGMIN, LSTM cuantificado, junto con una variedad de optimizaciones de rendimiento. Esto sienta las bases para acelerar un rango mucho mayor de modelos, como los de detección de objetos y segmentación de imágenes. Estamos trabajando con proveedores de hardware y frameworks de aprendizaje automático populares, como TensorFlow, para optimizar y lanzar la compatibilidad con NNAPI 1.2.

API térmica

Cuando los dispositivos se sobrecalientan, pueden acelerar la CPU o la GPU, lo que puede afectar a las apps y los juegos de forma inesperada. Ahora, en Android 10, las apps y los juegos pueden usar una API térmica para supervisar los cambios en el dispositivo y tomar medidas que ayudan a restablecer la temperatura normal. Por ejemplo, las apps de transmisión pueden reducir la resolución, la tasa de bits o el tráfico de red, una app de cámara podría inhabilitar el flash o la mejora intensiva de imágenes, o un juego podría reducir la velocidad de fotogramas o el teselado poligonal. Obtén más información aquí.

Compatibilidad por medio de API públicas

Android 10 continúa expandiendo las restricciones en las interfaces que no pertenecen al SDK, por lo que las apps pasarán gradualmente hacia el uso exclusivo de las API públicas. Si una interfaz que usas actualmente está restringida, puedes solicitar una nueva API pública para esa interfaz. Para ayudarte a realizar la transición y evitar que tus apps fallen, habilitaremos las restricciones solo cuando tu app se oriente a Android 10 (nivel de API 29). Para obtener más detalles sobre las restricciones, consulta la guía para desarrolladores.

Actualizaciones más rápidas, código actualizado

Android 10 se compiló para brindar actualizaciones más rápidas mediante el Proyecto Treble, que proporciona una interfaz coherente que se puede probar entre Android y el código subyacente del dispositivo de los fabricantes del dispositivo y de Silicon. Mediante Treble, los fabricantes de dispositivos pueden llevar Android 10 a dispositivos compatibles con Treble de forma más rápida y económica.

Android 10 también es la primera versión compatible con Project Mainline (llamada oficialmente actualizaciones del sistema de Google Play), nuestra nueva tecnología para proteger a los usuarios de Android y mantener sus dispositivos actualizados con importantes cambios de código, directamente desde Google Play. Con las actualizaciones del sistema de Google Play, podemos actualizar componentes internos específicos en todos los dispositivos que ejecutan Android 10 y versiones posteriores, sin requerir una actualización completa del sistema por parte del fabricante del dispositivo.

En el caso de los desarrolladores, esperamos que estas actualizaciones de Android 10 ayuden a mantener la coherencia de la implementación de la plataforma en todos los dispositivos y, con el tiempo, lograr una mayor uniformidad que reduzca los costos de desarrollo y pruebas.

Comenzar

Para obtener todos los recursos para desarrolladores de Android 10, visita developer.android.com/10.