Características y API

Android 16 incluye excelentes funciones y APIs para desarrolladores. En las siguientes secciones, se resumen estas funciones para ayudarte a comenzar a usar las APIs relacionadas.

Para obtener una lista detallada de las APIs nuevas, modificadas y quitadas, consulta el informe de diferencias de API. Para obtener detalles sobre las nuevas APIs, consulta la referencia de la API de Android. Las nuevas APIs están destacadas para que sea más fácil identificarlas.

También debes revisar las áreas en las que los cambios de la plataforma podrían afectar a tus apps. Para obtener más información, consulta las siguientes páginas:

Funcionalidad principal

Android incluye nuevas APIs que expanden las funciones principales del sistema Android.

Dos lanzamientos de la API de Android en 2025

  • This preview is for the next major release of Android with a planned launch in Q2 of 2025. This release is similar to all of our API releases in the past, where we can have planned behavior changes that are often tied to a targetSdkVersion.
  • We're planning the major release a quarter earlier (Q2 rather than Q3 in prior years) to better align with the schedule of device launches across our ecosystem, so more devices can get the major release of Android sooner. With the major release coming in Q2, you'll need to do your annual compatibility testing a few months earlier than in previous years to make sure your apps are ready.
  • We plan to have another release in Q4 of 2025 which also will include new developer APIs. The Q2 major release will be the only release in 2025 to include planned behavior changes that could affect apps.

In addition to new developer APIs, the Q4 minor release will pick up feature updates, optimizations, and bug fixes; it will not include any app-impacting behavior changes.

Timeline view of Android releases in 2025, noting that the 25Q2
       release is a major release and the 25Q4 release is a minor release.

We'll continue to have quarterly Android releases. The Q1 and Q3 updates in-between the API releases will provide incremental updates to help ensure continuous quality. We're actively working with our device partners to bring the Q2 release to as many devices as possible.

Using new APIs with major and minor releases

Guarding a code block with a check for API level is done today using the SDK_INT constant with VERSION_CODES. This will continue to be supported for major Android releases.

if (SDK_INT >= VERSION_CODES.BAKLAVA) {
  // Use APIs introduced in Android 16
}

The new SDK_INT_FULL constant can be used for API checks against both major and minor versions with the new VERSION_CODES_FULL enumeration.

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor release
}

You can also use the Build.getMinorSdkVersion() method to get just the minor SDK version.

val minorSdkVersion = Build.getMinorSdkVersion(VERSION_CODES_FULL.BAKLAVA)

These APIs have not yet been finalized and are subject to change, so please send us feedback if you have any concerns.

Experiencia del usuario y IU del sistema

Android 16 les brinda a los desarrolladores de apps y a los usuarios más control y flexibilidad para configurar sus dispositivos según sus necesidades.

Notificaciones centradas en el progreso

Android 16 引入了以进度为中心的通知,可帮助用户顺畅地跟踪用户发起的端到端历程。

Notification.ProgressStyle 是一种新的通知样式,可让您创建以进度为中心的通知。主要用例包括共享车辆、送货和导航。在 Notification.ProgressStyle 类中,您可以使用细分来表示用户体验历程中的状态和里程碑。

如需了解详情,请参阅以进度为中心的通知文档页面。

锁屏上显示的以进度为中心的通知。
在通知栏中显示的以进度为中心的通知。

Actualizaciones del gesto atrás predictivo

Android 16 agrega nuevas APIs para ayudarte a habilitar animaciones del sistema de gesto atrás predictivo en la navegación por gestos, como la animación de volver a la pantalla principal. Registrar el onBackInvokedCallback con el nuevo PRIORITY_SYSTEM_NAVIGATION_OBSERVER permite que tu app reciba la llamada normal de onBackInvoked cada vez que el sistema controla una navegación hacia atrás sin afectar el flujo normal de navegación hacia atrás.

Además, Android 16 agrega finishAndRemoveTaskCallback() y moveTaskToBackCallback. Cuando se registran estas devoluciones de llamada con OnBackInvokedDispatcher, el sistema puede activar comportamientos específicos y reproducir las animaciones correspondientes con anticipación cuando se invoca el gesto atrás.

Tecnología táctil más enriquecida

Android expuso el control sobre el actuador táctil desde su creación.

Android 11 agregó compatibilidad con efectos táctiles más complejos que los actuadores más avanzados podrían admitir a través de VibrationEffect.Compositions de primitivas semánticas definidas por el dispositivo.

Android 16 agrega APIs táctiles que permiten que las apps definan las curvas de amplitud y frecuencia de un efecto táctil y, al mismo tiempo, abstraigan las diferencias entre las capacidades del dispositivo.

Productividad y herramientas para desarrolladores

Si bien la mayor parte de nuestro trabajo para mejorar tu productividad se centra en herramientas como Android Studio, Jetpack Compose y las bibliotecas de Android Jetpack, siempre buscamos formas en la plataforma para ayudarte a materializar tu visión.

Manejo de contenido para fondos animados

在 Android 16 中,动态壁纸框架将获得一个新的 content API,以应对由用户驱动的动态壁纸带来的挑战。目前,包含用户提供的内容的实时壁纸需要复杂的服务专用实现。Android 16 引入了 WallpaperDescriptionWallpaperInstance。借助 WallpaperDescription,您可以识别同一服务中的动态壁纸的不同实例。例如,如果某张壁纸同时在主屏幕和锁定屏幕上显示,则这两种情况下显示的内容可能各不相同。壁纸选择器和 WallpaperManager 会使用此元数据更好地向用户呈现壁纸,从而简化创建多样化个性化动态壁纸体验的过程。

Rendimiento y batería

Android 16 presenta APIs que ayudan a recopilar estadísticas sobre tus apps.

Generación de perfiles activada por el sistema

ProfilingManager 在 Android 15 中添加,让应用能够在现场使用 Perfetto 请求收集性能数据。不过,由于此性能分析必须从应用启动,因此应用很难或根本无法捕获启动或 ANR 等关键流程。

为此,Android 16 向 ProfilingManager 引入了系统触发的性能分析。应用可以注册接收特定触发器(例如冷启动 reportFullyDrawn 或 ANR)轨迹的兴趣,然后系统会代表应用启动和停止轨迹。轨迹完成后,结果会传送到应用的数据目录。

Inicia el componente en ApplicationStartInfo

ApplicationStartInfo se agregó en Android 15, lo que permite que una app vea los motivos del inicio del proceso, el tipo de inicio, los horarios de inicio, la limitación y otros datos de diagnóstico útiles. Android 16 agrega getStartComponent() para distinguir qué tipo de componente activó el inicio, lo que puede ser útil para optimizar el flujo de inicio de tu app.

Mejor introspección de trabajos

The JobScheduler#getPendingJobReason() API returns a reason why a job might be pending. However, a job might be pending for multiple reasons.

In Android 16, we are introducing a new API JobScheduler#getPendingJobReasons(int jobId), which returns multiple reasons why a job is pending, due to both explicit constraints set by the developer and implicit constraints set by the system.

We're also introducing JobScheduler#getPendingJobReasonsHistory(int jobId), which returns a list of the most recent constraint changes.

We recommend using the API to help you debug why your jobs may not be executing, especially if you're seeing reduced success rates of certain tasks or have bugs around latency of certain job completion. For example, updating widgets in the background failed to occur or prefetch job failed to be called prior to app start.

This can also better help you understand if certain jobs are not completing due to system defined constraints versus explicitly set constraints.

Frecuencia de actualización adaptativa

Android 15 中引入的自适应刷新率 (ARR) 可让受支持硬件上的显示屏刷新率使用离散的 VSync 步长来适应内容帧速率。这不仅降低了功耗,还无需进行可能导致卡顿的模式切换。

Android 16 引入了 hasArrSupport()getSuggestedFrameRate(int),同时恢复了 getSupportedRefreshRates(),以便您的应用更轻松地利用 ARR。RecyclerView 1.4从快速滑动或平滑滚动中稳定下来时会在内部支持 ARR,我们将继续努力,将 ARR 支持添加到更多 Jetpack 库中。这篇帧速率文章介绍了许多可用于设置帧速率的 API,以便您的应用可以直接使用 ARR。

APIs de Headroom en ADPF

SystemHealthManager presenta las APIs de getCpuHeadroom y getGpuHeadroom, diseñadas para proporcionar a los juegos y las apps con gran consumo de recursos estimaciones de los recursos de CPU y GPU disponibles. Estos métodos te ofrecen una forma de evaluar cómo tu app o juego puede mejorar mejor el estado del sistema, en particular, cuando se usan junto con otras APIs de Android Dynamic Performance Framework (ADPF) que detectan el estrangulamiento térmico.

Si usas CpuHeadroomParams y GpuHeadroomParams en dispositivos compatibles, puedes personalizar el período que se usa para calcular el margen y seleccionar entre la disponibilidad de recursos promedio o mínima. Esto puede ayudarte a reducir el uso de recursos de la CPU o la GPU según corresponda, lo que genera mejores experiencias del usuario y una mayor duración de batería.

Accesibilidad

Android 16 agrega nuevas APIs y funciones de accesibilidad que pueden ayudarte a llevar tu app a todos los usuarios.

APIs de accesibilidad mejoradas

Android 16 adds additional APIs to enhance UI semantics that help improve consistency for users that rely on accessibility services, such as TalkBack.

Duration added to TtsSpan

Android 16 extends TtsSpan with a TYPE_DURATION, consisting of ARG_HOURS, ARG_MINUTES, and ARG_SECONDS. This lets you directly annotate time duration, ensuring accurate and consistent text-to-speech output with services like TalkBack.

Support elements with multiple labels

Android currently allows UI elements to derive their accessibility label from another, and now offers the ability for multiple labels to be associated, a common scenario in web content. By introducing a list-based API within AccessibilityNodeInfo, Android can directly support these multi-label relationships. As part of this change, we've deprecated AccessibilityNodeInfo#setLabeledBy and #getLabeledBy in favor of #addLabeledBy, #removeLabeledBy, and #getLabeledByList.

Improved support for expandable elements

Android 16 adds accessibility APIs that allow you to convey the expanded or collapsed state of interactive elements, such as menus and expandable lists. By setting the expanded state using setExpandedState and dispatching TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents with a CONTENT_CHANGE_TYPE_EXPANDED content change type, you can ensure that screen readers like TalkBack announce state changes, providing a more intuitive and inclusive user experience.

Indeterminate ProgressBars

Android 16 adds RANGE_TYPE_INDETERMINATE, giving a way for you to expose RangeInfo for both determinate and indeterminate ProgressBar widgets, allowing services like TalkBack to more consistently provide feedback for progress indicators.

Tri-state CheckBox

The new AccessibilityNodeInfo getChecked and setChecked(int) methods in Android 16 now support a "partially checked" state in addition to "checked" and "unchecked." This replaces the deprecated boolean isChecked and setChecked(boolean).

Supplemental descriptions

When an accessibility service describes a ViewGroup, it combines content labels from its child views. If you provide a contentDescription for the ViewGroup, accessibility services assume you are also overriding the description of non-focusable child views. This can be problematic if you want to label things like a drop-down (for example, "Font Family") while preserving the current selection for accessibility (for example, "Roboto"). Android 16 adds setSupplementalDescription so you can provide text that provides information about a ViewGroup without overriding information from its children.

Required form fields

Android 16 adds setFieldRequired to AccessibilityNodeInfo so apps can tell an accessibility service that input to a form field is required. This is an important scenario for users filling out many types of forms, even things as simple as a required terms and conditions checkbox, helping users to consistently identify and quickly navigate between required fields.

Teléfono como entrada de micrófono para llamadas de voz con audífonos LEA

Android 16 agrega la capacidad para que los usuarios de audífonos LE Audio cambien entre los micrófonos integrados en los audífonos y el micrófono del teléfono para las llamadas de voz. Esto puede ser útil en entornos ruidosos o en otras situaciones en las que los micrófonos del audífono no funcionen bien.

Controles de volumen ambiental para audífonos LEA

Android 16 新增了一项功能,可让 LE Audio 助听器用户调节助听器麦克风接收的环境声音的音量。在背景噪音过大或过小的情况下,这可能会很有用。

Cámara

Android 16 mejora la compatibilidad con los usuarios de cámaras profesionales, lo que permite una exposición automática híbrida junto con ajustes precisos de temperatura de color y tono. Un nuevo indicador de modo nocturno ayuda a tu app a saber cuándo cambiar de una sesión de cámara con modo nocturno a una sin él y viceversa. Las nuevas acciones de Intent facilitan la captura de fotos en movimiento y seguimos mejorando las imágenes UltraHDR con compatibilidad con la codificación HEIF y nuevos parámetros del borrador del estándar ISO 21496-1.

Exposición automática híbrida

Android 16 agrega nuevos modos de exposición automática híbridos a Camera2, lo que te permite controlar manualmente aspectos específicos de la exposición y, al mismo tiempo, permitir que el algoritmo de exposición automática (AE) controle el resto. Puedes controlar ISO + AE y tiempo de exposición + AE, lo que proporciona una mayor flexibilidad en comparación con el enfoque actual en el que tienes control manual completo o dependes por completo de la exposición automática.

public void setISOPriority() {
  ...
  int[] availablePriorityModes =
     mStaticInfo.getCharacteristics().get(CameraCharacteristics.
     COLOR_AE_AVAILABLE_PRIORITY_MODES);
  ...
  // Turn on AE mode to set priority mode
  reqBuilder.set(CaptureRequest.CONTROL_AE_MODE,
      CameraMetadata.CONTROL_AE_MODE_ON);
  reqBuilder.set(CaptureRequest.CONTROL_AE_PRIORITY_MODE,
      CameraMetadata.CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY);
  reqBuilder.set(CaptureRequest.SENSOR_SENSITIVITY,
      TEST_SENSITIVITY_VALUE);
  CaptureRequest request = reqBuilder.build();
  ...
}

Ajustes precisos de temperatura de color y tono

Android 16 agrega compatibilidad con la cámara para realizar ajustes precisos de temperatura y tono de color para brindar una mejor compatibilidad con aplicaciones de grabación de video profesionales. En versiones anteriores de Android, podías controlar la configuración del balance de blancos a través de CONTROL_AWB_MODE, que contiene opciones limitadas a una lista predeterminada, como Incandescente, Nublado y Crepúsculo. COLOR_CORRECTION_MODE_CCT permite el uso de COLOR_CORRECTION_COLOR_TEMPERATURE y COLOR_CORRECTION_COLOR_TINT para realizar ajustes precisos del balance de blancos en función de la temperatura de color correlacionada.

public void setCCT() {
  ...
  Range<Integer> colorTemperatureRange =
     mStaticInfo.getCharacteristics().get(CameraCharacteristics.
     COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE);
  // Set to manual mode to enable CCT mode
  reqBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_OFF);
  reqBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE,
      CameraMetadata.COLOR_CORRECTION_MODE_CCT);
  reqBuilder.set(CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE, 5000);
  reqBuilder.set(CaptureRequest.COLOR_CORRECTION_COLOR_TINT, 30);
  CaptureRequest request = reqBuilder.build();
  ...
}

En los siguientes ejemplos, se muestra cómo se vería una foto después de aplicar diferentes ajustes de temperatura de color y tono:

La imagen original sin aplicar ajustes de temperatura ni tono de color.
La imagen con la temperatura de color ajustada a 3,000.
La imagen con la temperatura de color ajustada a 7,000.


La imagen con los niveles de tono reducidos en un 50%.
La imagen con los niveles de tono aumentados en 50.

Detección de escenas del modo nocturno de la cámara

Para ayudar a tu app a saber cuándo cambiar de una sesión de cámara con modo nocturno a una normal y viceversa, Android 16 agrega EXTENSION_NIGHT_MODE_INDICATOR. Si es compatible, está disponible en CaptureResult dentro de Camera2.

Esta es la API que mencionamos brevemente como próximamente disponible en la entrada de blog Cómo Instagram permitió a los usuarios tomar fotos increíbles con poca luz. Esa publicación es una guía práctica sobre cómo implementar el modo nocturno junto con un caso de éxito que vincula fotos de mayor calidad del modo nocturno integrado en la app con un aumento en la cantidad de fotos compartidas desde la cámara integrada en la app.

Acciones de intent de captura de fotos en movimiento

Android 16 添加了标准 intent 操作 ACTION_MOTION_PHOTO_CAPTUREACTION_MOTION_PHOTO_CAPTURE_SECURE,用于请求相机应用拍摄动态照片并将其返回。

您必须传递额外的 EXTRA_OUTPUT 来控制将图片写入的位置,或者通过 Intent.setClipData(ClipData) 传递 Uri。如果您未设置 ClipData,系统会在调用 Context.startActivity(Intent) 时将其复制到该位置。

动态照片示例,显示静态图片和动态播放画面。

Mejoras de imagen UltraHDR

标准动态范围 (SDR) 与高动态范围 (HDR) 图片质量对比示意图。

Android 16 继续致力于通过 UltraHDR 图片提供出色的图片质量。它添加了对 HEIC 文件格式的 UltraHDR 图片的支持。这些图片将获得 ImageFormat 类型 HEIC_ULTRAHDR,并包含类似于现有 UltraHDR JPEG 格式的嵌入式增益图。我们还在努力为 UltraHDR 添加 AVIF 支持,敬请期待。

此外,Android 16 在 UltraHDR 中实现了 ISO 21496-1 草稿标准中的其他参数,包括能够获取和设置应应用增益图算法的色彩空间,以及支持使用 SDR 增益图的 HDR 编码基础图片。

Gráficos

Android 16 incluye las mejoras gráficas más recientes, como los efectos gráficos personalizados con AGSL.

Efectos gráficos personalizados con AGSL

Android 16 agrega RuntimeColorFilter y RuntimeXfermode, lo que te permite crear efectos complejos, como Umbral, Sepia y Saturación de tono, y aplicarlos a las llamadas de dibujo. Desde Android 13, puedes usar AGSL para crear RuntimeShaders personalizados que extiendan Shader. La nueva API refleja esto, y agrega un RuntimeColorFilter potenciado por AGSL que extiende ColorFilter y un efecto Xfermode que te permite implementar la composición y la combinación personalizadas basadas en AGSL entre píxeles de origen y de destino.

private val thresholdEffectString = """
    uniform half threshold;

    half4 main(half4 c) {
        half luminosity = dot(c.rgb, half3(0.2126, 0.7152, 0.0722));
        half bw = step(threshold, luminosity);
        return bw.xxx1 * c.a;
    }"""

fun setCustomColorFilter(paint: Paint) {
   val filter = RuntimeColorFilter(thresholdEffectString)
   filter.setFloatUniform(0.5);
   paint.colorFilter = filter
}

Conectividad

Android 16 actualiza la plataforma para darle a tu app acceso a los avances más recientes en las tecnologías inalámbricas y de comunicación.

Rango con seguridad mejorada

Android 16 agrega compatibilidad con funciones de seguridad sólidas en la ubicación Wi-Fi en dispositivos compatibles con 802.11az de Wi-Fi 6, lo que permite que las apps combinen la mayor precisión, la mayor escalabilidad y la programación dinámica del protocolo con mejoras de seguridad, como la encriptación basada en AES-256 y la protección contra ataques de intermediarios. Esto permite que se use de forma más segura en casos de uso de proximidad, como destrabar una laptop o la puerta de un vehículo. 802.11az está integrado en el estándar Wi-Fi 6, lo que aprovecha su infraestructura y sus capacidades para una adopción más amplia y una implementación más sencilla.

APIs de rango genérico

Android 16 包含新的 RangingManager,它提供了在受支持的硬件上确定本地设备与远程设备之间的距离和角度的方法。RangingManager 支持使用各种测距技术,例如 BLE 信道声音探测、基于 BLE RSSI 的测距、超宽带和 Wi-Fi 往返时间。

Contenido multimedia

Android 16 incluye una variedad de funciones que mejoran la experiencia multimedia.

Mejoras en el selector de fotos

The photo picker provides a safe, built-in way for users to grant your app access to selected images and videos from both local and cloud storage, instead of their entire media library. Using a combination of Modular System Components through Google System Updates and Google Play services, it's supported back to Android 4.4 (API level 19). Integration requires just a few lines of code with the associated Android Jetpack library.

Android 16 includes the following improvements to the photo picker:

  • Embedded photo picker: New APIs that enable apps to embed the photo picker into their view hierarchy. This allows it to feel like a more integrated part of the app while still leveraging the process isolation that allows users to select media without the app needing overly broad permissions. To maximize compatibility across platform versions and simplify your integration, you'll want to use the forthcoming Android Jetpack library if you want to integrate the embedded photo picker.
  • Cloud search in photo picker: New APIs that enable searching from the cloud media provider for the Android photo picker. Search functionality in the photo picker is coming soon.

Video profesional avanzado

Android 16 引入了对高级专业视频 (APV) 编解码器的支持,该编解码器专为专业级高品质视频录制和后期制作而设计。

APV 编解码器标准具有以下特点:

  • 感知上无损的视频画质(接近原始视频画质)
  • 复杂度低且吞吐量高的仅帧内编码(无像素域预测),以更好地支持编辑工作流
  • 支持高比特率范围(最高几十 Gbps),适用于 2K、4K 和 8K 分辨率内容,由轻量级熵编码方案实现
  • 帧平铺,用于沉浸式内容和启用并行编码和解码
  • 支持各种色度采样格式和位深
  • 支持多次解码和重新编码,且不会严重降低视觉质量
  • 支持多视图视频和辅助视频,例如深度、Alpha 和预览
  • 支持 HDR10/10+ 和用户定义的元数据

OpenAPV 项目提供了 APV 的参考实现。Android 16 将实现对 APV 422-10 配置文件的支持,该配置文件提供 YUV 422 色彩采样以及 10 位编码,并且目标比特率最高可达 2 Gbps。

Privacidad

Android 16 incluye una variedad de funciones que ayudan a los desarrolladores de apps a proteger la privacidad del usuario.

Actualizaciones de Health Connect

Health Connect en la versión preliminar para desarrolladores agrega ACTIVITY_INTENSITY, un nuevo tipo de datos definido según los lineamientos de la Organización Mundial de la Salud sobre la actividad moderada y vigorosa. Cada registro requiere la hora de inicio, la hora de finalización y si la intensidad de la actividad es moderada o vigorosa.

Health Connect también contiene APIs actualizadas que admiten registros de salud. Esto permite que las apps lean y escriban registros médicos en formato FHIR con el consentimiento explícito del usuario. Esta API está en un programa de acceso anticipado. Si quieres participar, regístrate para formar parte de nuestro programa de acceso anticipado.

Privacy Sandbox en Android

Android 16 incorpora la versión más reciente de Privacy Sandbox en Android, que forma parte de nuestro trabajo continuo para desarrollar tecnologías en las que los usuarios sepan que se protege su privacidad. En nuestro sitio web, encontrarás más información sobre el programa de versión beta para desarrolladores de Privacy Sandbox en Android para ayudarte a comenzar. Consulta el entorno de ejecución de SDK, que permite que los SDKs se ejecuten en un entorno de ejecución dedicado independiente de la app que se entrega, lo que proporciona protecciones más sólidas en torno a la recopilación y el uso compartido de los datos del usuario.

Seguridad

Android 16 incluye funciones que te ayudan a mejorar la seguridad de tu app y a proteger sus datos.

API de uso compartido de claves

Android 16 agrega APIs que admiten el uso compartido del acceso a las claves de Android Keystore con otras apps. La nueva clase KeyStoreManager admite otorgar y revocar el acceso a las claves por uid de la app, y también incluye una API para que las apps accedan a las claves compartidas.

Factores de forma de los dispositivos

Android 16 les brinda a tus apps la compatibilidad para aprovechar al máximo los factores de forma de Android.

Marco de trabajo estandarizado de calidad de imagen y audio para TVs

Android 16 中的新 MediaQuality 软件包公开了一组标准化 API,用于访问音频和图片配置文件以及与硬件相关的设置。这样,在线播放应用就可以查询配置文件并将其动态应用于媒体:

  • 使用更大动态范围进行母版制作的电影需要更高的色彩准确度,才能看清阴影中的细微细节并根据环境光线进行调整,因此,最好使用色彩准确度优先于亮度的配置文件。
  • 体育赛事直播通常采用较窄的动态范围进行母版制作,但通常是在白天观看,因此偏向亮度而非色彩准确度的配置文件可以获得更好的效果。
  • 完全交互式内容需要尽可能减少处理以缩短延迟时间,并且需要更高的帧速率,因此许多电视都附带游戏配置文件。

借助此 API,应用可以在个人资料之间切换,用户可以享受调整支持的电视,以便尽可能适合其内容。

Internacionalización

Android 16 agrega funciones y capacidades que complementan la experiencia del usuario cuando se usa un dispositivo en diferentes idiomas.

Texto vertical

Android 16 添加了对垂直渲染和测量文本的低级支持,以便为库开发者提供基本的垂直书写支持。这对于日语等通常使用竖向书写系统的语言特别有用。Paint 类中添加了一个新标志 VERTICAL_TEXT_FLAG。使用 Paint.setFlags 设置此标志后,Paint 的文本测量 API 将报告垂直进度,而不是水平进度,并且 Canvas 将垂直绘制文本。

val text = "「春は、曙。」"
Box(
    Modifier.padding(innerPadding).background(Color.White).fillMaxSize().drawWithContent {
        drawIntoCanvas { canvas ->
            val paint = Paint().apply { textSize = 64.sp.toPx() }
            // Draw text vertically
            paint.flags = paint.flags or VERTICAL_TEXT_FLAG
            val height = paint.measureText(text)
            canvas.nativeCanvas.drawText(
                text,
                0,
                text.length,
                size.width / 2,
                (size.height - height) / 2,
                paint
            )
        }
    }
) {}

Personalización del sistema de medición

Users can now customize their measurement system in regional preferences within Settings. The user preference is included as part of the locale code, so you can register a BroadcastReceiver on ACTION_LOCALE_CHANGED to handle locale configuration changes when regional preferences change.

Using formatters can help match the local experience. For example, "0.5 in" in English (United States), is "12,7 mm" for a user who has set their phone to English (Denmark) or who uses their phone in English (United States) with the metric system as the measurement system preference.

To find these settings, open the Settings app and navigate to System > Languages & region.