Se compiló Android 10 sobre la base de tres temas importantes. En primer lugar, Android 10 está perfilando la innovación móvil de vanguardia con el aprendizaje automático avanzado y la compatibilidad con dispositivos emergentes, como teléfonos que admiten 5G y dispositivos plegables. En segundo lugar, Android 10 se enfoca principalmente en la privacidad y seguridad, con más de 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 de manera que las personas y familias puedan lograr un mayor equilibrio con la tecnología.
A continuación, se muestran las novedades de Android 10 para desarrolladores y la manera en que puedes usarlas.
Innovación y nuevas experiencias
Con Android 10, puedes aprovechar las innovaciones de hardware y software más recientes para compilar experiencias de apps increíbles para los usuarios.
Dispositivos plegables
Gracias a la incorporación de una compatibilidad sólida con el modo Multiventana, Android 10 amplía la forma de realizar varias tareas a la vez en las ventanas de la app y proporciona continuidad de pantalla para mantener el estado de la app cuando se pliega o despliega el dispositivo. 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. Además, cambia la forma en que funciona el atributo del manifiesto resizeableActivity para ayudarte a administrar la manera en que tu app se visualiza en pantallas grandes y plegables. Para ayudarte a compilar apps para dispositivos plegables, puedes configurar un emulador plegable como dispositivo virtual (AVD) en Android Studio. Puedes obtener detalles sobre cómo optimizar tus apps para dispositivos plegables en la guía para desarrolladores.
Redes 5G
Las redes 5G prometen ofrecer velocidades mucho mayores y menor latencia. Android 10 agrega la 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, puedes diseñar apps y juegos con experiencias ricas y envolventes para los usuarios mediante 5G.
Respuesta inteligente en notificaciones
Android 10 usa el AA integrado en el dispositivo para sugerir acciones contextuales en notificaciones, como respuestas inteligentes para mensajes, o bien abrir el mapa para una dirección en la notificación. Tus apps pueden aprovechar esta función de inmediato sin que tengas que realizar acciones adicionales. Las acciones y respuestas inteligentes proporcionadas por el sistema se insertan directamente en las notificaciones de forma predeterminada. De igual manera, puedes proporcionar tus propias respuestas y acciones si lo deseas. Solo tienes que inhabilitar la opción de respuesta inteligente en cada notificación mediante setAllowGeneratedReplies() y setAllowSystemGeneratedContextualActions().
Tema oscuro
Android 10 agrega un tema oscuro que se aplica a todo el sistema que es ideal para los momentos en los que hay poca luz y ayuda a ahorrar batería. Los usuarios pueden activarlo desde la Configuración o con el Ahorro de batería. Esta opción cambia la IU del sistema al tema oscuro y también lo habilita en las apps que lo admiten. Puedes crear un tema oscuro personalizado para tu app, o bien habilitar la nueva función "Forzar el modo oscuro", lo que le permite al sistema crear una versión oscura del tema existente de forma dinámica. 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.
Navegación por gestos
En Android 10, se introduce un modo de navegación completamente por gestos que elimina el área de la barra de navegación y les permite a las apps usar toda la pantalla para brindar experiencias más envolventes. Este conserva las opciones de navegación "Atrás", "Inicio" y "Recientes" por medio de deslizamientos desde los bordes en lugar de botones visibles. Para integrar la navegación por gestos de manera fluida, deberías crear un diseño que se extienda de lado a lado y detrás de la barra de navegación a fin de crear una experiencia envolvente. Para implementar esto, las apps deben usar la API de setSystemUiVisibility() para que se muestren en pantalla completa y, luego, administrar los WindowInsets según corresponda a fin de garantizar que las partes importantes de la IU no queden ocultas. 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 la configuración principal del sistema directamente en el contexto de tu app por medio de una nueva API del panel de configuración. Un panel de configuración es una IU flotante que puedes invocar para mostrar opciones de configuración que los usuarios puedan 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 la conectividad como el modo de avión, Wi-Fi (incluidas las redes cercanas) y los datos móviles. Para mostrar un panel de configuración, 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 fácil y rápido, lo que les 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 muestran a los usuarios en la IU de uso compartido. Como se publican de antemano, la IU de uso compartido se carga inmediatamente cuando se inicia. Los accesos directos de uso compartido son similares a los accesos directos a apps y usan la misma API de ShortcutInfo. La API también se admite en la biblioteca ShareTarget de AndroidX. Consulta la app de ejemplo para obtener más detalles.
Privacidad para los usuarios
La privacidad es el foco principal de Android 10, desde medidas de protección más efectivas en la plataforma hasta nuevas funciones diseñadas exclusivamente para preservar la privacidad. Sobre la base de versiones anteriores, Android 10 incluye grandes cambios para proteger la privacidad y proporcionar a los usuarios mayor control, con una IU de sistema optimizada, permisos más estrictos y restricciones sobre los datos que pueden usar las apps. Consulta los cambios en la privacidad para obtener más detalles sobre cómo admitirlos en tus apps.
Otorga a los usuarios mayor control sobre los datos de ubicación: Los usuarios tienen mayor control sobre sus datos de ubicación por medio de una nueva opción de permisos. Ahora pueden permitir que una app acceda a la ubicación solo cuando esté en uso (se ejecute en primer plano). En el caso de la mayoría de las apps, esta opción brinda acceso suficiente, mientras que para los usuarios es un gran avance en términos de transparencia y control. Para obtener más información sobre los cambios de ubicación, consulta la guía para desarrolladores o nuestra entrada de blog.
Protege los datos de ubicación en la búsqueda de redes: La mayoría de las APIs de búsqueda 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 los identificadores del dispositivo que no se pueden restablecer, los cuales podrían usarse para el rastreo, incluido el IMEI, el número de serie y los identificadores similares de dispositivos. La dirección MAC del dispositivo también se aleatoriza cuando este se conecta a redes Wi-Fi de manera predeterminada. Lee las prácticas recomendadas para ayudarte a elegir los identificadores adecuados para tu caso de uso y consulta los detalles aquí.
Protege los datos del usuario en el almacenamiento externo: Android 10 introduce una variedad de cambios que brindan a los usuarios mayor control sobre los archivos del almacenamiento externo y de los datos de las apps dentro de estos. Las apps pueden almacenar sus archivos en sus propias zonas de pruebas, pero deben usar MediaStore para acceder a los archivos multimedia de uso compartido y el selector de archivos del sistema para acceder a los archivos de uso compartido en la nueva colección de Descargas. Obtén más información aquí.
Bloquea las interrupciones no deseadas: Android 10 evita que las apps activas en segundo plano se inicien en primer plano de manera inesperada y quiten el foco de otra app. Obtén más información aquí.
Seguridad
Android 10 introduce varias funciones que refuerzan la seguridad del usuario mediante mejoras 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 inicien con Android 10 encripten los datos del usuario. Para que este proceso sea más eficiente, Android 10 incluye Adiantum, nuestro nuevo método 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 para la seguridad de la plataforma.
Biométricos mejorados: En Android 10, se extiende el marco de trabajo de BiometricPrompt para admitir los métodos de autenticación pasivos, como la autenticación facial, y agregar flujos de autenticación implícitos y explícitos. En el flujo explícito, el usuario debe confirmar explícitamente la transacción en el TEE durante la autenticación. En cambio, el implícito se diseñó como una alternativa más liviana para las transacciones con autenticación pasiva. Además, Android 10 mejora el resguardo de las credenciales de dispositivo siempre que sea 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 de JPEG o XMP asociados con los elementos relacionados con la profundidad, y un mapa de confianza y profundidad incorporado en el mismo archivo. Estos te permiten ofrecer opciones de bokeh y difuminado especializadas 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 ejecuten Android 10 y versiones posteriores.
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 la reproducción de audio. Además de habilitar los subtítulos, la API te permite admitir casos de uso populares, como la transmisión de partidos en vivo. Creamos esta nueva capacidad teniendo en cuenta la privacidad y la protección contra el incumplimiento de los derechos de autor. Por lo tanto, la capacidad de una app de capturar el audio de otra está restringida, lo que brinda a las apps control total sobre si es posible capturar sus transmisiones de audio o no. 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 mediante Opus (un códec abierto libre de derechos de autor optimizado para la transmisión de música y voz) y HDR10+ para videos de alto rango dinámico en dispositivos que lo admitan. La API de MediaCodecInfo introduce una manera más fácil de determinar las capacidades de procesamiento de video de un dispositivo Android. Puedes obtener una lista de las velocidades de fotogramas y tamaños admitidos para un códec específico.
API de Native MIDI
En el caso de las apps que realizan su procesamiento de audio en C++, Android 10 presenta 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 no bloqueante, lo que habilita el procesamiento de mensajes MIDI con baja latencia. Puedes probarlo en la app de ejemplo y en el código fuente aquí.
Micrófonos direccionales que se pueden acercar
Android 10 ofrece mayor control sobre la captura de audio mediante una nueva API de MicrophoneDirection. Puedes usar la API para especificar una dirección preferida del micrófono cuando grabas 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 introduce una manera estandarizada de controlar los micrófonos que se pueden acercar, lo que permite que tu app tenga el control de 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 ejecuten Android 10 o una versión posterior, y se recomienda para todos los dispositivos de 32 bits. Ya observamos un impulso significativo de la compatibilidad con Vulkan en el ecosistema (entre los dispositivos que ejecutan Android N o versiones posteriores, el 53% de estos admite Vulkan 1.0.3 o una versión posterior). Con este nuevo requisito de Android 10, esperamos que se implemente cada vez más en el año próximo.
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 de uso 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 redes Wi-Fi locales, para funciones entre pares como la configuración, descarga o impresión. Las APIs de sugerencia de redes les permiten a las apps ofrecer al usuario redes Wi-Fi preferidas para conectarse a Internet.
Modos de rendimiento de Wi-Fi
Las apps ahora pueden solicitar la conexión Wi-Fi automática si se habilitan los modos de alto rendimiento y baja latencia.
Estos pueden ser muy útiles en los casos en que la baja latencia es importante para la experiencia del usuario, como los juegos en tiempo real, las llamadas de voz activas y casos prácticos similares. La plataforma trabaja con el firmware del dispositivo para cumplir los requisitos utilizando la menor cantidad de energía posible. 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 utilizando la menor cantidad de energía posible.
Conceptos básicos de Android
Optimizaciones de ART
Las mejoras en el tiempo de ejecución de ART ayudan a que tus apps se inicien más rápido, consuman menos memoria y se ejecuten sin inconvenientes (sin que debas realizar acciones adicionales). Los perfiles de ART que proporciona Google Play permiten al ART compilar previamente parte de tu app incluso antes de que esta se ejecute. En el tiempo de ejecución, Android 10 agrega la recolección generacional de elementos no utilizados al recolector de elementos no utilizados de copiado simultáneo (CC) del ART para hacer que la recolección sea más eficaz en términos de tiempo y de la CPU, reduce la cantidad de bloqueos y ayuda a que las apps se ejecuten mejor en dispositivos de gama más baja.
API de Neural Networks 1.2
Agregamos 60 operaciones nuevas, incluidas ARGMAX, ARGMIN, LSTM cuantificado, además de una variedad de optimizaciones de rendimiento. De esta manera, se construye la base para acelerar una mayor variedad de modelos (como los de detección de objetos y segmentación de imágenes). Estamos trabajando con proveedores de hardware y marcos de trabajo de aprendizaje automático populares, como TensorFlow, para optimizar y agregar 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 para ayudar 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; 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
En Android 10, se siguen expandiendo las restricciones respecto de las interfaces que no pertenecen al SDK, por lo que, gradualmente, las apps comenzarán a usar solo las APIs públicas. Si una interfaz que usas actualmente está restringida, puedes solicitar una nueva API pública para esa interfaz. Para ayudarte a facilitar la transición y evitar que se produzcan fallas en tus apps, habilitaremos las restricciones solo si tu app se orienta 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 por medio del Proyecto Treble, el cual 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 incorporar Android 10 en dispositivos compatibles con Treble de manera más rápida y menos costosa.
Android 10 también es la primera versión en admitir Project Mainline (que oficialmente se llama actualización del sistema de Google Play), nuestra nueva tecnología para proteger a los usuarios de Android y mantener sus dispositivos actualizados con importantes cambios en el código (directos de 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, y no requiere una actualización total del sistema por parte del fabricante del dispositivo.
En el caso de los desarrolladores, esperamos que estas actualizaciones en Android 10 ayuden a mantener la coherencia de la implementación de la plataforma en la totalidad de los dispositivos y, con el tiempo, lograr una mayor uniformidad que reducirá los costos de prueba y desarrollo.
Comenzar
Para obtener todos los recursos para desarrolladores de Android 10, consulta developer.android.com/10.