Descripción general de las funciones y API

Android 14 incluye excelentes funciones y APIs para desarrolladores. A continuación, se incluye información que te ayudará a conocer las funciones de tus apps y a comenzar a usar las APIs relacionadas.

Para obtener una lista detallada de las APIs agregadas, modificadas y quitadas, consulta el informe de diferencias de la API. Para obtener detalles sobre las APIs agregadas, consulta la referencia de la API de Android. En Android 14, busca las APIs que se agregaron en el nivel de API 34. Para obtener información sobre las áreas en las que los cambios de la plataforma podrían afectar tus apps, asegúrate de revisar los cambios en el comportamiento de Android 14 para apps orientadas a Android 14 y para todas las apps.

Internacionalización

Preferencias de idioma de las apps

Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with these additional capabilities:

  • Automatically generate an app's localeConfig: Starting with Android Studio Giraffe Canary 7 and AGP 8.1.0-alpha07, you can configure your app to support per-app language preferences automatically. Based on your project resources, the Android Gradle plugin generates the LocaleConfig file and adds a reference to it in the final manifest file, so you no longer have to create or update the file manually. AGP uses the resources in the res folders of your app modules and any library module dependencies to determine the locales to include in the LocaleConfig file.

  • Dynamic updates for an app's localeConfig: Use the setOverrideLocaleConfig() and getOverrideLocaleConfig() methods in LocaleManager to dynamically update your app's list of supported languages in the device's system settings. Use this flexibility to customize the list of supported languages per region, run A/B experiments, or provide an updated list of locales if your app utilizes server-side pushes for localization.

  • App language visibility for input method editors (IMEs): IMEs can utilize the getApplicationLocales() method to check the language of the current app and match the IME language to that language.

API de Grammatical Inflection

有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。

以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。

为帮助您针对区分性别的语言构建以用户为中心的界面,Android 14 引入了 Grammatical Inflection API,让您无需重构应用便能添加对语法性别的支持。

Preferencias regionales

Las preferencias regionales permiten que los usuarios personalicen las unidades de temperatura, el primer día de la semana y los sistemas de numeración. Una persona europea que vive en los Estados Unidos podría preferir que las unidades de temperatura estén en Celsius en lugar de Fahrenheit y que las apps consideren el lunes como comienzo de la semana en lugar de los domingos, la opción predeterminada en EE.UU.

Los nuevos menús de configuración de Android para estas preferencias les proporcionan a los usuarios una ubicación detectable y centralizada para cambiar las preferencias de las apps. Estas preferencias también se mantienen en copias de seguridad y restablecimientos. Varias APIs y algunos intents, como getTemperatureUnit y getFirstDayOfWeek, le otorgan a tu app acceso de lectura a las preferencias de los usuarios, por lo que tu app puede ajustar la forma en que muestra la información. También puedes registrar un BroadcastReceiver en ACTION_LOCALE_CHANGED para controlar los cambios de configuración regional cuando cambien las preferencias regionales.

Para encontrar esta configuración, abre la app de Configuración y dirígete a Sistema > Idiomas y entrada > Preferencias regionales.

Pantalla de preferencias regionales en la configuración del sistema Android.
Opciones de temperatura para preferencias regionales en el sistema Android configuración.

Accesibilidad

Escalamiento de fuente no lineal al 200%

A partir de Android 14, el sistema admite el escalamiento de la fuente hasta el 200%, lo que les brinda a los usuarios con visión reducida opciones de accesibilidad adicionales que se alinean con las Pautas de Accesibilidad al Contenido Web (WCAG).

Para evitar que los elementos de texto grandes en la pantalla amplíen demasiado, el sistema aplica una curva de escalamiento no lineal. Esta estrategia de escalamiento implica que el texto grande no escala a la misma velocidad que uno más pequeño. El escalamiento de fuente no lineal permite preservar la jerarquía proporcional entre elementos de diferentes tamaños, a la vez que mitiga los problemas con el escalamiento lineal de texto en grados altos (como el texto cortado o el texto que se vuelve más difícil de leer por su gran tamaño de visualización).

Prueba tu app con escalamiento de fuente no lineal

Habilita el tamaño máximo de fuente en la configuración de accesibilidad de un dispositivo para probar tu app.

Si ya usas unidades de píxeles ajustados (sp) para definir el tamaño del texto, estas opciones adicionales y mejoras de escalamiento se aplican automáticamente al texto de tu app. Sin embargo, debes realizar pruebas de IU con el tamaño de fuente máximo habilitado (200%) para asegurarte de que tu app aplique los tamaños de fuente correctamente y pueda admitir tamaños de fuente más grandes sin afectar la usabilidad.

Para habilitar el tamaño de la fuente al 200%, sigue estos pasos:

  1. Abre la app de Configuración y dirígete a Accesibilidad > Tamaño y texto de la pantalla.
  2. En la opción Tamaño de fuente, presiona el ícono de signo más (+) hasta que se habilite la configuración de tamaño máximo de fuente, como se muestra en la imagen que acompaña esta sección.

Usa unidades de píxeles ajustados (sp) para los tamaños de texto

Recuerda especificar siempre los tamaños de texto en unidades sp. Cuándo tu app usa unidades de sp, Android puede aplicar el tamaño de texto preferido del usuario y a escalarla adecuadamente.

No uses unidades de sp para el padding ni definas alturas de vista con padding implícito: con dimensiones de sp de escalamiento de fuente no lineal que pueden no ser proporcionales, por lo que 4 sp + 20 sp podría no ser igual a 24 sp.

Convierte unidades de píxeles ajustados (sp)

Usa TypedValue.applyDimension() para convertir unidades de sp en píxeles y TypedValue.deriveDimension() para convertir píxeles en sp. Estos métodos aplican automáticamente la curva de escalamiento no lineal correcta.

Evita codificar la ecuación mediante Configuration.fontScale o DisplayMetrics.scaledDensity. Como el escalamiento de fuente es no lineal, el campo scaledDensity ya no es exacto. El fontScale solo se debe usar con fines informativos porque las fuentes ya no se escala con un solo valor escalar.

Usa unidades de sp para lineHeight

Siempre define android:lineHeight con unidades de sp en lugar de dp, de modo que la altura de la línea se ajuste junto con el texto. De lo contrario, si tu texto es sp, pero tu lineHeight está en dp o px, no se ajusta y se ve apretado. TextView corrige automáticamente el elemento lineHeight para que la respuesta deseada se conservan las proporciones, pero solo si se modifican textSize y lineHeight se define en unidades sp.

Cámara y contenido multimedia

Ultra HDR para imágenes

Una ilustración de la calidad de imagen del rango dinámico estándar (SDR) en comparación con el alto rango dinámico (HDR).

Android 14 agrega compatibilidad con imágenes de alto rango dinámico (HDR) que retienen más información del sensor cuando se toma una foto, lo que permite colores vivos y un mayor contraste. Android usa el formato Ultra HDR, que es totalmente retrocompatible con las imágenes JPEG, lo que permite que las apps interactúen sin problemas con las imágenes HDR y las muestren en rango dinámico estándar (SDR) según sea necesario.

El framework renderiza estas imágenes en la IU en HDR de forma automática cuando tu app habilita el uso de la IU HDR para su ventana de actividad, ya sea a través de una entrada de manifiesto o en el tiempo de ejecución mediante una llamada a Window.setColorMode(). También puedes capturar imágenes estáticas Ultra HDR comprimidas en dispositivos compatibles. Con más colores recuperados del sensor, la edición posterior puede ser más flexible. El Gainmap asociado con las imágenes Ultra HDR se puede usar para renderizarlas con OpenGL o Vulkan.

Zoom, enfoque, Postview y más en las extensiones de cámara

Android 14 升级并改进了相机扩展程序,让应用能够处理更长的处理时间,从而支持在受支持的设备上使用计算密集型算法(例如弱光摄影)来改善图片。这些功能可让用户在使用相机扩展功能时获得更出色的体验。这些改进的示例包括:

Zoom en el sensor

When REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE in CameraCharacteristics contains SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, your app can use advanced sensor capabilities to give a cropped RAW stream the same pixels as the full field of view by using a CaptureRequest with a RAW target that has stream use case set to CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW. By implementing the request override controls, the updated camera gives users zoom control even before other camera controls are ready.

Audio USB sin pérdida

Android 14 支持无损音频格式,可通过 USB 有线耳机提供发烧友级体验。您可以查询 USB 设备的首选混音器属性,注册监听器以监听首选混音器属性的更改,以及使用 AudioMixerAttributes 类配置混音器属性。此类表示音频混音器的格式,例如声道掩码、采样率和行为。该类允许直接发送音频,而无需混音、调节音量或处理效果。

Productividad y herramientas para desarrolladores

Credential Manager

Android 14 agrega Credential Manager como una API de la plataforma, con compatibilidad adicional con dispositivos Android 4.4 (nivel de API 19) a través de una biblioteca de Jetpack que usa los Servicios de Google Play. El objetivo de Credential Manager es facilitar el acceso de los usuarios con APIs que recuperan y almacenan credenciales con proveedores de credenciales configurados por el usuario. El Administrador de credenciales admite varios métodos de acceso, como nombres de usuario y contraseñas, llaves de acceso y soluciones de acceso federado (como Acceder con Google) en una sola API.

Las llaves de acceso ofrecen muchas ventajas. Por ejemplo, las llaves de acceso se basan en estándares de la industria, pueden funcionar en diferentes sistemas operativos y ecosistemas de navegadores, y se pueden usar con sitios web y apps.

Para obtener más información, consulta la documentación de Credential Manager y las llaves de acceso y la entrada de blog sobre Credential Manager y las llaves de acceso.

Health Connect

Health Connect 是用户健康与健身数据的设备端仓库。借助该功能,用户可以在一个位置控制要与这些应用共享哪些数据,并在自己喜爱的应用之间共享数据。

在搭载 Android 14 之前的 Android 版本的设备上,Health Connect 可作为应用从 Google Play 商店下载。从 Android 14 开始,Health Connect 将成为 Android 平台的一部分,并通过 Google Play 系统更新接收更新,而无需单独下载。这样一来,Health Connect 就可以频繁更新,您的应用可以依赖于搭载 Android 14 或更高版本的设备上提供的 Health Connect。用户可以通过设备的“设置”访问 Health Connect,隐私控制功能集成到系统设置中。

用户无需在搭载 Android 14 或更高版本的设备上单独下载应用,即可开始使用 Health Connect。
用户可以通过系统设置控制哪些应用可以访问其健康与健身数据。

Health Connect 在 Android 14 中包含多项新功能,例如锻炼路线,可让用户分享可在地图上直观呈现的锻炼路线。路线定义为在一定时间范围内保存的位置列表,您的应用可以将路线插入锻炼时段,将它们关联起来。为确保用户能够完全控制此类敏感数据,用户必须允许与其他应用共享单个路线。

如需了解详情,请参阅 Health Connect 文档以及有关 Android Health 中的新功能的博文。

Actualizaciones de OpenJDK 17

Android 14 continúa la tarea de actualizar las bibliotecas principales de Android para alinearlas con las funciones de las versiones más recientes de LTS de OpenJDK, lo que incluye las actualizaciones de bibliotecas y la compatibilidad con el lenguaje Java 17 para desarrolladores de apps y plataformas.

Se incluyen las siguientes funciones y mejoras:

  • Se actualizaron aproximadamente 300 clases java.base para admitir Java 17.
  • Bloques de texto, que introducen literales de cadena de varias líneas en el lenguaje de programación Java.
  • Coincidencia de patrones para instanceof, que permite que un objeto se trate como si tuviera un tipo específico en un instanceof sin variables adicionales.
  • Clases selladas, que te permiten restringir qué clases e interfaces pueden extenderlas o implementarlas.

Gracias a las actualizaciones del sistema de Google Play (Project Mainline), más de 600 millones de dispositivos están habilitados para recibir las actualizaciones más recientes de Android Runtime (ART) que incluyen estos cambios. Esto forma parte de nuestro compromiso de brindar a las apps un entorno más seguro y coherente en todos los dispositivos, y de ofrecer funciones y capacidades nuevas a los usuarios, independientemente de los lanzamientos de la plataforma.

Java y OpenJDK son marcas o marcas registradas de Oracle o sus afiliados.

Mejoras para tiendas de aplicaciones

Android 14 introduce varias APIs de PackageInstaller que permiten que las tiendas de aplicaciones mejoren la experiencia del usuario.

Solicita aprobación para la instalación antes de realizar la descarga

La instalación o actualización de una app puede requerir aprobación del usuario. Por ejemplo, cuando un instalador que usa el permiso REQUEST_INSTALL_PACKAGES intenta instalar una app nueva. En versiones anteriores de Android, las tiendas de aplicaciones solo pueden solicitar la aprobación del usuario después de que se escriben los APK en la sesión de instalación y esta está confirmada.

A partir de Android 14, el método requestUserPreapproval() les permite a los instaladores solicitar la aprobación del usuario antes de confirmar la sesión de instalación. Esta mejora permite que una tienda de aplicaciones aplace la descarga de cualquier APK hasta que el usuario haya aprobado la instalación. Además, una vez que un usuario aprobó la instalación, la tienda de aplicaciones puede descargarla e instalarla en segundo plano sin interrumpir al usuario.

Reclama la responsabilidad de las actualizaciones futuras

El método setRequestUpdateOwnership() permite que un instalador le indique al sistema que tiene la responsabilidad de las actualizaciones futuras de una app que instala. Esta función permite actualizar la aplicación forzosa de la propiedad, es decir, que solo el propietario de la actualización puede instalar actualizaciones automáticas en la app. La aplicación forzosa de la actualización de la propiedad ayuda a garantizar que los usuarios reciban actualizaciones solo desde la tienda de aplicaciones prevista.

Cualquier otro instalador, incluidos los que usan el permiso INSTALL_PACKAGES, deben recibir la aprobación explícita del usuario para instalar una actualización. Si un usuario decide continuar con la actualización desde otra fuente, la propiedad de esta se perderá.

Actualiza las apps en momentos menos disruptivos

Por lo general, las tiendas de aplicaciones quieren evitar actualizar una app que está en uso de forma activa, ya que esto produce que se finalicen los procesos en ejecución de la app, lo que podría interrumpir lo que el usuario estaba haciendo.

A partir de Android 14, la API de InstallConstraints les brinda a los instaladores una forma de garantizar que las actualizaciones de apps se realicen en un momento oportuno. Por ejemplo, una tienda de aplicaciones puede llamar al método commitSessionAfterInstallConstraintsAreMet() para asegurarse de que una actualización solo se confirme cuando el usuario ya no interactúa con la app en cuestión.

Instala divisiones opcionales sin inconvenientes

Con los APK divididos, las funciones de una app se pueden entregar en archivos APK separados, en lugar de un APK monolítico. Los APK divididos permiten que las tiendas de aplicaciones optimicen la entrega de diferentes componentes de las apps. Por ejemplo, las tiendas de aplicaciones pueden realizar optimizaciones en función de las propiedades del dispositivo de destino. La API de PackageInstaller es compatible con las divisiones desde su introducción en el nivel de API 22.

En Android 14, el método setDontKillApp() permite que un instalador indique que los procesos en ejecución de la app no deberían finalizar cuando se instalan nuevas divisiones. Las tiendas de aplicaciones pueden usar esta función para instalar funciones nuevas de una app sin inconvenientes mientras el usuario la usa.

Paquetes de metadatos de la app

从 Android 14 开始,Android 软件包安装程序可让您指定应用元数据(例如数据安全做法),以在 Google Play 等应用商店页面上架。

Detecta cuando los usuarios toman capturas de pantalla del dispositivo

为了打造更加标准化的屏幕截图检测体验,Android 14 引入了可保护隐私的屏幕截图检测 API。借助此 API,应用可以按 activity 注册回调。如果用户在该 activity 可见时截取屏幕截图,系统会调用这些回调并通知用户。

Experiencia del usuario

Acciones personalizadas y clasificación mejorada de Sharesheet

Android 14 actualiza la hoja compartida del sistema para admitir acciones personalizadas de la app y resultados informativos de la versión preliminar para los usuarios.

Agrega acciones personalizadas

Con Android 14, tu app puede agregar acciones personalizadas a la hoja compartida del sistema que invoca.

Captura de pantalla de las acciones personalizadas en la hoja compartida.

Mejora la clasificación de los objetivos de Direct Share

Android 14 usa más indicadores de las apps para determinar la clasificación de los objetivos de Direct Share para proporcionarles resultados más útiles al usuario. Para proporcionar el indicador más útil para la clasificación, sigue las instrucciones para mejorar las clasificaciones de tus objetivos de Direct Share. Las apps de comunicación también pueden informar el uso de combinaciones de teclas para los mensajes entrantes y salientes.

Fila de uso compartido directo en la hoja compartida, como se muestra en 1

Compatibilidad con animaciones integradas y personalizadas para el gesto atrás predictivo

Video: Animaciones de atrás predictivo

En Android 13, se introdujo la animación de atrás predictivo a la página principal detrás de una opción para desarrolladores. Cuando se usa en una app compatible que tiene habilitada la opción para desarrolladores, al deslizar hacia atrás, se muestra una animación que indica que el gesto de retroceso permite cerrar la app y regresar a la pantalla principal.

Android 14 incluye varias mejoras y orientación nueva para el gesto atrás predictivo:

Con esta versión preliminar de Android 14, todas las funciones de atrás predictivo permanecen detrás de una opción para desarrolladores. Consulta la guía para desarrolladores para migrar tu app al gesto atrás predictivo, así como la guía para desarrolladores para crear transiciones personalizadas en la app.

Anulaciones por app del fabricante del dispositivo con pantalla grande

借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP 替换项会指示系统调整应用大小以适应显示屏尺寸(避免进入尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false" 也是如此。

替换项旨在改善大屏设备上的用户体验。

借助新的清单属性,您可以为应用停用某些设备制造商替换项。

Anulaciones por app para usuarios de pantallas grandes

Per-app overrides change the behavior of apps on large screen devices. For example, the OVERRIDE_MIN_ASPECT_RATIO_LARGE device manufacturer override sets the app aspect ratio to 16:9 regardless of the app's configuration.

Android 14 QPR1 enables users to apply per‑app overrides by means of a new settings menu on large screen devices.

Compartir pantalla de una app

La función de compartir pantalla de una app permite a los usuarios compartir una ventana de la app en lugar de toda la pantalla del dispositivo durante la grabación de contenido de pantalla.

Con el uso compartido de pantalla de la app, la barra de estado, la barra de navegación, las notificaciones y otros elementos de la IU del sistema se excluyen de la pantalla compartida. Solo se comparte el contenido de la app seleccionada.

El uso compartido de pantalla de la app mejora la productividad y la privacidad, ya que permite que los usuarios ejecuten varias apps, pero limitan el uso compartido de contenido a una sola app.

Respuesta inteligente potenciada por LLM en Gboard en el Pixel 8 Pro

En los dispositivos Pixel 8 Pro con la actualización de funciones de diciembre, los desarrolladores pueden probar respuestas inteligentes de mayor calidad en Gboard con la tecnología de modelos de lenguaje grandes (LLM) integrados en el dispositivo que se ejecutan en Google Tensor.

Esta función está disponible como versión preliminar limitada para inglés de EE.UU. en WhatsApp, Line y KakaoTalk. Requiere el uso de un dispositivo Pixel 8 Pro con Gboard como teclado.

Para probarlo, primero habilita la función en Configuración > Opciones para desarrolladores > Configuración de AICore > Habilitar Aicore persistente.

A continuación, abre una conversación en una app compatible para ver la respuesta inteligente potenciada por LLM en la barra de sugerencias de Gboard en respuesta a los mensajes entrantes.

Gboard utiliza LLM integrados en el dispositivo para proporcionar respuestas inteligentes de mayor calidad.

Gráficos

Las rutas de acceso son consultables e interpolables

La API de Path de Android es un mecanismo potente y flexible para crear y renderizar gráficos vectoriales, con la capacidad de dibujar o rellenar una ruta, construir una ruta a partir de segmentos de línea o curvas cuadráticas o cúbicas, realizar operaciones booleanas para obtener formas aún más complejas o todas estas acciones de forma simultánea. Una limitación es la capacidad de descubrir lo que hay realmente en un objeto Path; los componentes internos del objeto son opacos para los llamadores después de su creación.

Para crear un Path, debes llamar a métodos como moveTo(), lineTo() y cubicTo() para agregar segmentos de ruta. Sin embargo, no hay forma de preguntarle a esa ruta cuáles son los segmentos, por lo que debes conservar esa información en el momento de la creación.

A partir de Android 14, puedes consultar rutas de acceso para descubrir su contenido. Primero, debes obtener un objeto PathIterator con la API de Path.getPathIterator:

Kotlin

val path = Path().apply {
    moveTo(1.0f, 1.0f)
    lineTo(2.0f, 2.0f)
    close()
}
val pathIterator = path.pathIterator

Java

Path path = new Path();
path.moveTo(1.0F, 1.0F);
path.lineTo(2.0F, 2.0F);
path.close();
PathIterator pathIterator = path.getPathIterator();

A continuación, puedes llamar a PathIterator para iterar a través de los segmentos uno por uno y recuperar todos los datos necesarios de cada segmento. En este ejemplo, se usan objetos PathIterator.Segment, que agrupan los datos por ti:

Kotlin

for (segment in pathIterator) {
    println("segment: ${segment.verb}, ${segment.points}")
}

Java

while (pathIterator.hasNext()) {
    PathIterator.Segment segment = pathIterator.next();
    Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints());
}

PathIterator también tiene una versión de next() no asignable en la que puedes pasar un búfer para contener los datos de puntos.

Uno de los casos de uso importantes para consultar datos de Path es la interpolación. Por ejemplo, podrías animar (o transformar) entre dos rutas diferentes. Para simplificar aún más ese caso de uso, Android 14 también incluye el método interpolate() en Path. Si suponemos que las dos rutas de acceso tienen la misma estructura interna, el método interpolate() crea un Path nuevo con ese resultado interpolado. En este ejemplo, se muestra una ruta cuya forma está incompleta (una interpolación lineal de 0.5) entre path y otherPath:

Kotlin

val interpolatedResult = Path()
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, .5f, interpolatedResult)
}

Java

Path interpolatedResult = new Path();
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, 0.5F, interpolatedResult);
}

La biblioteca graphics-path de Jetpack también habilita APIs similares para versiones anteriores de Android.

Mallas personalizadas con sombreadores de vértices y fragmentos

Android has long supported drawing triangle meshes with custom shading, but the input mesh format has been limited to a few predefined attribute combinations. Android 14 adds support for custom meshes, which can be defined as triangles or triangle strips, and can, optionally, be indexed. These meshes are specified with custom attributes, vertex strides, varying, and vertex and fragment shaders written in AGSL.

The vertex shader defines the varyings, such as position and color, while the fragment shader can optionally define the color for the pixel, typically by using the varyings created by the vertex shader. If color is provided by the fragment shader, it is then blended with the current Paint color using the blend mode selected when drawing the mesh. Uniforms can be passed into the fragment and vertex shaders for additional flexibility.

Procesador de búfer de hardware para Canvas

协助使用 Android 的 Canvas API 通过 硬件加速至 HardwareBuffer、Android 14 引入了 HardwareBufferRenderer。如果您的用例涉及通过 SurfaceControl 与系统合成器通信以实现低延迟绘制,此 API 特别有用。