Descripción general de las funciones y APIs

Android 15 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, lee el informe de diferencias de APIs. Para obtener detalles sobre las nuevas APIs, consulta la referencia de la API de Android. Las nuevas APIs están destacadas para mayor visibilidad. Además, para conocer las áreas en las que los cambios de la plataforma podrían afectar a tus apps, asegúrate de revisar los cambios de comportamiento que afectan a las apps cuando se orientan a Android 15 y los cambios de comportamiento que afectan a todas las apps, independientemente de targetSdkVersion.

Cámara y contenido multimedia

Android 15 incluye una variedad de funciones que mejoran la experiencia de la cámara y el contenido multimedia, y que te brindan acceso a herramientas y hardware para ayudar a los creadores a dar vida a su visión en Android.

Mejora con poca luz

Android 15 presenta el Intensificador de poca luz, un nuevo modo de exposición automática disponible para la Cámara 2 y la extensión de la cámara en modo nocturno. La mejora con poca luz ajusta la exposición de la transmisión de la vista previa en condiciones de poca luz. Esto se diferencia de la manera en que la extensión de la cámara del modo nocturno crea imágenes estáticas, ya que el modo nocturno combina una ráfaga de fotos para crear una imagen única mejorada. Si bien el modo nocturno funciona muy bien para crear imágenes estáticas, no puede crear un flujo continuo de fotogramas, pero la potencia baja sí puede hacerlo. Por lo tanto, la potenciación con poca luz habilita funciones nuevas de la cámara, como las siguientes:

  • Proporcionar una vista previa de imagen mejorada, de modo que los usuarios puedan enmarcar mejor sus fotos con poca luz
  • Escaneo de códigos QR con poca luz

Si habilitas la amplificación de poca luz, se activará automáticamente cuando haya un nivel de luz tenue y se desactivará cuando haya más luz.

Las apps pueden grabar fuera de la transmisión de la versión preliminar en condiciones de poca luz para guardar un video iluminado.

Para obtener más información, consulta Potenciación del modo noche.

Controles de cámara integrados en la app

En Android 15, se agrega una extensión nueva para tener más control sobre el hardware de la cámara y sus algoritmos en los dispositivos compatibles:

  • Ajustes avanzados de intensidad del flash que permiten un control preciso de la intensidad del flash en los modos SINGLE y TORCH mientras se capturan imágenes

Control del margen de HDR

En Android 15, se elige un margen HDR que sea apropiado para las capacidades subyacentes del dispositivo y la profundidad de bits del panel. En el caso de páginas con mucho contenido SDR, como una app de mensajería que muestra una sola miniatura HDR, este comportamiento puede afectar negativamente el brillo percibido del contenido de SDR. Android 15 te permite controlar el margen HDR con setDesiredHdrHeadroom para lograr un equilibrio entre el contenido SDR y HDR.

El brillo de los elementos de la IU del SDR en la pantalla izquierda parece ser más uniforme que el brillo de la pantalla derecha, lo que simula posibles problemas de margen cuando se mezclan el contenido HDR y SDR. Cuando ajustas el margen de HDR, puedes lograr un mejor equilibrio entre el contenido SDR y el HDR.

Control de volumen

Android 15 presenta compatibilidad con el estándar de volumen CTA-2075 para ayudarte a evitar incoherencias en el volumen del audio y garantizar que los usuarios no tengan que ajustar el volumen constantemente cuando cambien de contenido. El sistema aprovecha las características conocidas de los dispositivos de salida (auriculares y bocina), junto con los metadatos de intensidad disponibles en el contenido de audio AAC, para ajustar de forma inteligente el volumen del audio y los niveles de compresión de rango dinámico.

Para habilitar esta función, debes asegurarte de que los metadatos de volumen estén disponibles en tu contenido AAC y habilitar la función de plataforma en tu app. Para ello, llama a su método de fábrica create con el ID de sesión de audio del AudioTrack asociado a fin de crear una instancia de un objeto LoudnessCodecController. Puedes pasar un OnLoudnessCodecUpdateListener para modificar o filtrar los parámetros de volumen antes de que se apliquen en MediaCodec.

// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
                                .setSessionId(sessionId)
                                .build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
   val lcController = LoudnessCodecController.create(mSessionId)
   // Starts applying audio updates for each added MediaCodec

Pronto se actualizará AndroidX media3 ExoPlayer para aprovechar las APIs de LoudnessCodecController a fin de lograr una integración fluida de la app.

Dispositivos MIDI 2.0 virtuales

Android 13 agregó compatibilidad para conectarse a dispositivos MIDI 2.0 mediante USB, que se comunican mediante paquetes MIDI universales (UMP). Android 15 extiende la compatibilidad con UMP a apps MIDI virtuales, lo que permite que las apps de composición controlen las apps de sintetizador como un dispositivo MIDI 2.0 virtual, al igual que lo harían con un dispositivo MIDI USB 2.0.

Conectividad

Android 15 actualiza la plataforma para brindarle a tu app acceso a los avances más recientes en comunicación.

Compatibilidad por satélite

Android 15 continúa ampliando la compatibilidad de plataforma para la conectividad satelital e incluye algunos elementos de la IU para garantizar una experiencia del usuario coherente en todo el panorama de conectividad satelital.

Las apps pueden usar ServiceState.isUsingNonTerrestrialNetwork() para detectar cuándo un dispositivo está conectado a un satélite, lo que les permite conocer mejor el motivo por el que los servicios de red completa podrían no estar disponibles. Además, Android 15 admite apps de SMS y MMS, así como apps de RCS precargadas para usar la conectividad satelital para enviar y recibir mensajes.

Aparece una notificación cuando el dispositivo se conecta a un satélite.

Experiencias NFC más fluidas

En Android 15, se trabaja para que la experiencia de pago sin contacto sea más fluida y confiable, sin dejar de ser compatible con el sólido ecosistema de apps de NFC de Android. En los dispositivos compatibles, las apps pueden solicitar que NfcAdapter ingrese en el modo de observación, en el que el dispositivo escucha, pero no responde a los lectores de NFC, y envía los objetos PollingFrame de NFC de la app para que se procesen. Los objetos PollingFrame se pueden usar para realizar la autenticación antes de la primera comunicación con el lector de NFC, lo que permite una transacción de un toque en muchos casos.

Además, las apps ahora pueden registrar una huella dactilar en los dispositivos compatibles para recibir notificaciones sobre la actividad en bucle de sondeo, lo que permite un funcionamiento fluido con varias aplicaciones compatibles con NFC.

Rol de billetera

Android 15 introduce un nuevo rol de Billetera que permite una mayor integración con la app de Billetera preferida del usuario. Este rol reemplaza la configuración predeterminada de pago sin contacto de NFC. Para administrar el titular de la función de Billetera, los usuarios pueden navegar a Configuración > Apps > Apps predeterminadas.

El rol de billetera se usa cuando se enrutan los toques de NFC para los AID registrados en la categoría de pago. Los pagos siempre se dirigen al titular del rol de la Billetera, a menos que se ejecute en primer plano otra app registrada para el mismo AID.

Este rol también se usa para determinar dónde debe ir la tarjeta de Acceso rápido a la Billetera cuando se active. Cuando la función se establece en "None", la tarjeta de QuickAccess no está disponible y los toques de NFC de la categoría de pago solo se entregan a la app en primer plano.

Productividad y herramientas para desarrolladores

Si bien la mayor parte de nuestro trabajo para mejorar tus centros de productividad se centra en herramientas como Android Studio, Jetpack Compose y las bibliotecas de Android Jetpack, siempre buscamos formas en la plataforma que te ayuden a concretar tu visión con mayor facilidad.

Mejoras de PDF

La Vista previa para desarrolladores 2 de Android 15 incluye una versión preliminar anticipada de mejoras importantes en las APIs de PdfRenderer. Las apps pueden incorporar funciones avanzadas, como el procesamiento de archivos protegidos con contraseña, las anotaciones, la edición de formularios, la búsqueda y la selección con texto. Las optimizaciones lineales de PDF son compatibles para acelerar la visualización local de PDF y reducir el uso de recursos.

Las actualizaciones más recientes en la renderización de PDF incluyen funciones como la búsqueda en un archivo PDF incorporado.

Se trasladó PdfRenderer a un módulo que se puede actualizar con actualizaciones del sistema de Google Play independientemente de la versión de la plataforma. Admitimos estos cambios en Android 11 (nivel de API 30) mediante la creación de una versión de la plataforma de API compatible con versiones anteriores a Android 15, llamada PdfRendererPreV.

Valoramos tus comentarios sobre las mejoras que realizamos en la superficie de la API de PdfRenderer y planeamos facilitar aún más la incorporación de estas APIs a tu app con una próxima biblioteca de Android Jetpack.

Mejoras en el cambio automático de idioma

Android 14 增加了设备端音频中的多语言识别功能,可在语言之间自动切换,但这可能会导致单词丢失,尤其是在语言切换时,两种话语之间的停顿较少时。Android 15 添加了额外的控件,可帮助应用根据其用例调整此切换。EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS 会将自动切换限制为仅在音频会话开始时进行,而 EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES 则会在指定次数的切换后停用语言切换。如果您希望自动检测到会话期间只讲一种语言,这些选项特别有用。

Controles detallados de salto de línea

A partir de Android 15, un TextView y el salto de línea subyacente pueden conservar la parte determinada del texto en la misma línea para mejorar la legibilidad. Puedes aprovechar esta personalización de salto de línea con la etiqueta <nobreak> en los recursos de cadenas o createNoBreakSpan. Del mismo modo, puedes conservar palabras de la separación silábica con la etiqueta <nohyphen> o createNoHyphenationSpan.

Por ejemplo, el siguiente recurso de cadenas no incluye un salto de línea y se renderiza con el texto "Pixel 8 Pro" rompiendo en un lugar no deseado:

<resources>
    <string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>

Por el contrario, este recurso de cadenas incluye la etiqueta <nobreak>, que une la frase "Pixel 8 Pro" y evita los saltos de línea:

<resources>
    <string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>

La diferencia en la forma en que se renderizan estas cadenas se muestra en las siguientes imágenes:

Diseño de una línea de texto donde la frase "Pixel 8 Pro" no se une con una etiqueta <nobreak>.
Diseño para la misma línea de texto donde la frase "Pixel 8 Pro" está unida a la etiqueta <nobreak>.

Actualizaciones de OpenJDK 17

Android 15 会继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致。

其中包含以下主要功能和改进:

这些 API 通过 Google Play 系统更新在超过 10 亿台搭载 Android 12(API 级别 31)及更高版本的设备上进行了更新,让您能够以最新的编程功能为目标平台。

Archivado de apps

Android 和 Google Play 去年宣布支持应用归档,这让用户可以通过从 Google Play 上使用 Android App Bundle 发布的部分不常用的应用来释放空间。Android 15 现在包含对应用归档和取消归档的操作系统级支持,因此所有应用商店都可以更轻松地实现此功能。

具有 REQUEST_DELETE_PACKAGES 权限的应用可以调用 PackageInstaller requestArchive 方法来请求归档已安装的应用软件包,此操作会移除 APK 和所有缓存的文件,但会保留用户数据。已归档的应用会通过 LauncherApps API 作为可显示的应用返回;用户会看到界面处理方式,以突出显示这些应用已归档。如果用户点按已归档的应用,相关安装程序将收到将其取消归档的请求,并且可以通过 ACTION_PACKAGE_ADDED 广播监控恢复过程。

Accesibilidad

En Android 15, se agregan funciones que mejoran la accesibilidad para los usuarios.

Mejor braille

En Android 15, permitimos que TalkBack admita pantallas braille que usen el estándar HID a través de USB y Bluetooth seguro.

Este estándar, al igual que el que se usa en mouse y teclados, ayudará a Android a admitir una mayor variedad de pantallas braille con el tiempo.

Pantallas y factores de forma grandes

Android 15 brinda a tus apps la compatibilidad para aprovechar al máximo los factores de forma de Android, incluidas las pantallas grandes, los dispositivos plegables y los dispositivos plegables.

Compatibilidad con la pantalla de portada

Tu app puede declarar una propiedad que Android 15 usa para permitir que tu Application o Activity se presente en las pequeñas pantallas de portada de los dispositivos que admiten la pantalla abatible. Estas pantallas son demasiado pequeñas para considerarlas como objetivos compatibles de modo que las apps para Android se ejecuten en ellas, pero tu app puede aceptar admitirlas, lo que hará que esté disponible en más lugares.

Rendimiento y batería

Android continúa su enfoque en ayudarte a mejorar el rendimiento y la calidad de tus apps. Android 15 introduce APIs nuevas que ayudan a que las tareas de tu app sean más eficientes de ejecutar, optimizar el rendimiento de las apps y recopilar estadísticas sobre tus apps.

API de ApplicationStartInfo

En versiones anteriores de Android, el inicio de apps ya era un misterio. Fue difícil determinar dentro de tu app si se iniciaba desde un estado frío, tibio o caliente. También era difícil saber cuánto tiempo dedicó la app durante las distintas fases de lanzamiento: bifurcar el proceso, llamar a onCreate, dibujar el primer fotograma y mucho más. Cuando se creó una instancia de tu clase Application, no tuviste forma de saber si la app se inició desde una transmisión, un proveedor de contenido, un trabajo, una copia de seguridad, un inicio completo, una alarma o un Activity.

La API de ApplicationStartInfo en Android 15 proporciona todo esto y mucho más. Incluso puedes optar por agregar tus propias marcas de tiempo al flujo para recopilar datos de tiempo en un solo lugar. Además de recopilar métricas, puedes usar ApplicationStartInfo para optimizar directamente el inicio de la app. Por ejemplo, puedes eliminar la costosa creación de instancias de bibliotecas relacionadas con la IU dentro de tu clase Application cuando tu app se inicia debido a una transmisión.

Información detallada sobre el tamaño de la app

A partir de Android 8.0 (nivel de API 26), Android incluyó la API de StorageStats.getAppBytes que resume el tamaño instalado de una app como una sola cantidad de bytes, que es una suma del tamaño del APK, el tamaño de los archivos extraídos del APK y los archivos que se generaron en el dispositivo, como el código compilado por adelantado (AOT). Esta cifra no es muy detallada en términos de cómo tu app usa el almacenamiento.

En Android 15, se agrega la API de StorageStats.getAppBytesByDataType([type]), que te permite obtener estadísticas sobre cómo tu app usa todo ese espacio, incluidas las divisiones de archivos APK, el código relacionado con AOT y la aceleración, metadatos dex, bibliotecas y perfiles guiados.

Generación de perfiles administrada por la app

Android 15 incluye la clase ProfilingManager completamente nueva, que te permite recopilar información de generación de perfiles desde tu app. Tenemos previsto unir esto con una API de Android Jetpack que simplificará la construcción de solicitudes de generación de perfiles, pero la API principal permitirá la recopilación de volcados de montón, perfiles de montón, muestreo de pila y mucho más. Proporciona una devolución de llamada a tu app con una etiqueta proporcionada para identificar el archivo de salida, que se entrega al directorio de archivos de la app. La API establece un límite de frecuencia para minimizar el impacto en el rendimiento.

Mejoras en la base de datos SQLite

Android 15 introduce nuevas APIs de SQLite que exponen funciones avanzadas del motor SQLite subyacente que tienen como objetivo problemas de rendimiento específicos que pueden manifestarse en las apps.

Los desarrolladores deben consultar las prácticas recomendadas sobre el rendimiento de SQLite para aprovechar al máximo su base de datos SQLite, en especial cuando trabajan con bases de datos grandes o cuando se ejecutan consultas sensibles a la latencia.

  • Transacciones diferidas de solo lectura: Cuando emitas transacciones de solo lectura (no incluyen instrucciones de escritura), usa beginTransactionReadOnly() y beginTransactionWithListenerReadOnly(SQLiteTransactionListener) para emitir transacciones DEFERRED de solo lectura. Estas transacciones pueden ejecutarse de forma simultánea y, si la base de datos está en modo WAL, pueden ejecutarse en simultáneo con las transacciones de IMMEDIATE o EXCLUSIVE.
  • ID y recuentos de filas: Se agregaron nuevas APIs para recuperar el recuento de las filas modificadas o el ID de la última fila insertada sin emitir una consulta adicional. getLastChangedRowCount() muestra la cantidad de filas que insertó, actualizó o borró la instrucción de SQL más reciente dentro de la transacción actual, mientras que getTotalChangedRowCount() muestra el recuento de la conexión actual. getLastInsertRowId() muestra el rowid de la última fila que se insertará en la conexión actual.
  • Declaraciones sin procesar: Emite una declaración de SQlite sin procesar, evitando las wrappers de conveniencia y cualquier sobrecarga de procesamiento adicional que puedan generar.

Actualizaciones del framework de rendimiento dinámico de Android

Android 15 继续投资开发 Android 动态性能框架 (ADPF),这是一组 API,可让游戏和性能密集型应用更直接地与 Android 设备的电源和散热系统进行互动。在受支持的设备上,Android 15 将添加新的 ADPF 功能:

  • 适用于提示会话的节能模式,用于指明其关联的线程应该优先考虑节能而非性能,非常适合长时间运行的后台工作负载。
  • 可以在提示会话中报告 GPU 和 CPU 的运行时长,从而使系统能够同时调整 CPU 和 GPU 频率,以便更好地满足工作负载需求。
  • 热余量阈值,用于根据余量预测来解释可能的热节流状态。

如需详细了解如何在应用和游戏中使用 ADPF,请参阅相关文档

Privacidad

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

Detección de grabación de pantalla

Android 15 增加了对应用检测功能的支持,以检测其是否被录制。每当应用在屏幕录制中处于可见或不可见状态之间转换时,系统都会调用回调。如果系统正在记录注册进程的 UID 拥有的 activity,则应用会被视为可见。这样,如果您的应用正在执行敏感操作,您就可以告知用户系统正在记录这些操作。

val mCallback = Consumer<Int> { state ->
  if (state == SCREEN_RECORDING_STATE_VISIBLE) {
    // We're being recorded
  } else {
    // We're not being recorded
  }
}

override fun onStart() {
   super.onStart()
   val initialState =
      windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
   mCallback.accept(initialState)
}

override fun onStop() {
    super.onStop()
    windowManager.removeScreenRecordingCallback(mCallback)
}

Capacidades expandidas de IntentFilter

Android 15 compila compatibilidad con una resolución de Intent más precisa a través de UriRelativeFilterGroup, que contiene un conjunto de objetos UriRelativeFilter que forman un conjunto de reglas de coincidencia de Intent que deben cumplirse, incluidos los parámetros de consulta de URL, los fragmentos de URL y las reglas de bloqueo o exclusión.

Estas reglas se pueden definir en el archivo en formato XML AndroidManifest con la nueva etiqueta <uri-relative-filter-group>, que puede incluir una etiqueta android:allow de manera opcional. Estas etiquetas pueden contener etiquetas <data> que usan atributos de etiquetas de datos existentes, además de los nuevos atributos android:query y android:fragment.

Este es un ejemplo de la sintaxis AndroidManifest:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="http" />
  <data android:scheme="https" />
  <data android:domain="astore.com" />
  <uri-relative-filter-group>
    <data android:pathPrefix="/auth" />
    <data android:query="region=na" />
  </uri-relative-filter-group>
  <uri-relative-filter-group android:allow="false">
    <data android:pathPrefix="/auth" />
    <data android:query="mobileoptout=true" />
  </uri-relative-filter-group>
  <uri-relative-filter-group android:allow="false">
    <data android:pathPrefix="/auth" />
    <data android:fragmentPrefix="faq" />
  </uri-relative-filter-group>
</intent-filter>

Privacy Sandbox en Android

Android 15 将 Android 广告服务提升到扩展级别 10,在其中融入了最新版本的 Privacy Sandbox on Android。我们致力于开发新技术来加强用户隐私保护,并为移动应用提供有效的个性化广告体验。我们的隐私沙盒页面详细介绍了 Privacy Sandbox on Android 开发者预览版和 Beta 版计划,以帮助您开始使用。

Health Connect

Android 15 integra las extensiones 10 de Android 14 en torno a Health Connect de Android, una plataforma segura y centralizada para administrar y compartir los datos de salud y fitness recopilados por la app. Esta actualización agrega compatibilidad con nuevos tipos de datos de actividad física, nutrición y mucho más.

Compartir pantalla parcialmente

Android 15 admite el uso compartido parcial de la pantalla, de modo que los usuarios puedan compartir o grabar solo una ventana de la app en lugar de toda la pantalla del dispositivo. Esta función, habilitada por primera vez en QPR2 para Android 14, incluye devoluciones de llamada de MediaProjection que permiten que tu app personalice la experiencia de compartir pantalla de forma parcial. Ten en cuenta que, en el caso de las apps orientadas a Android 14 (nivel de API 34) o versiones posteriores, ahora se requiere el consentimiento del usuario para cada sesión de captura de MediaProjection.

Seguridad

Android 15 te ayuda a mejorar la seguridad de tu app y a proteger sus datos.

Administración de claves para la encriptación de extremo a extremo

Presentamos E2eeContactKeysManager en Android 15, que facilita la encriptación de extremo a extremo (E2EE) en tus apps para Android mediante una API a nivel del SO destinada al almacenamiento de claves públicas criptográficas.

El E2eeContactKeysManager está diseñado para integrarse con la app de contactos de la plataforma a fin de brindarles a los usuarios una forma centralizada de administrar y verificar las claves públicas de sus contactos.

Protege archivos con fs-verity

Experiencia del usuario

Android 15 les brinda a los desarrolladores de apps y a los usuarios más control y flexibilidad para configurar sus dispositivos de modo que se ajusten a sus necesidades.

Reglas para la función No interrumpir mejoradas

AutomaticZenRule 可让应用自定义注意力管理(勿扰)规则,并决定何时启用或停用这些规则。Android 15 大幅增强了这些规则,以改善用户体验。其中包含以下增强功能:

  • 将类型添加到 AutomaticZenRule,允许系统对某些规则应用特殊处理。
  • AutomaticZenRule 添加了图标,有助于使模式更易于识别。
  • AutomaticZenRule 添加 triggerDescription 字符串,用于描述应在哪些条件下为用户启用规则。
  • AutomaticZenRule 添加了 ZenDeviceEffects,以允许规则触发灰度显示、夜间模式或调暗壁纸等功能。

Internacionalización

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

Justificación entre caracteres

从 Android 15 开始,可以使用 JUSTIFICATION_MODE_INTER_CHARACTER 利用字母间距将文本两端对齐。Android 8.0(API 级别 26)中首次引入了字词间对齐,而字符间对齐可为使用空格字符进行分割的语言(例如中文、日语等)提供类似的功能。

使用 JUSTIFICATION_MODE_NONE 的日语文本布局。
使用 JUSTIFICATION_MODE_NONE 的英语文本布局。


使用 JUSTIFICATION_MODE_INTER_WORD 的日语文本布局。
使用 JUSTIFICATION_MODE_INTER_WORD 的英语文本布局。


使用新版 JUSTIFICATION_MODE_INTER_CHARACTER 的日语文本布局。
使用新版 JUSTIFICATION_MODE_INTER_CHARACTER 的英语文本布局。