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 detargetSdkVersion
.
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.
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
yTORCH
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.
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.
Mejora con poca luz
Android 15 introduces Low Light Boost, a new auto-exposure mode available to both Camera 2 and the night mode camera extension. Low Light Boost adjusts the exposure of the Preview stream in low-light conditions. This is different from how the night mode camera extension creates still images, because night mode combines a burst of photos to create a single, enhanced image. While night mode works very well for creating a still image, it can't create a continuous stream of frames, but Low Light Boost can. Thus, Low Light Boost enables new camera capabilities, such as:
- Providing an enhanced image preview, so users are better able to frame their low-light pictures
- Scanning QR codes in low light
If you enable Low Light Boost, it automatically turns on when there's a low light level, and turns off when there's more light.
Apps can record off the Preview stream in low-light conditions to save a brightened video.
For more information, see Low Light Boost.
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.
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.
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
Android 15 Developer Preview 2 includes an early preview of substantial
improvements to the PdfRenderer
APIs. Apps can incorporate
advanced features such as rendering password-protected files,
annotations, form editing, searching, and
selection with copy. Linearized PDF optimizations are supported to
speed local PDF viewing and reduce resource use.
The PdfRenderer
has been moved to a module that can be updated using Google
Play system updates independent of the platform release, and we're supporting
these changes back to Android 11 (API level 30) by creating a compatible
pre-Android 15 version of the API surface, called
PdfRendererPreV
.
We value your feedback on the enhancements we've made to the PdfRenderer
API
surface, and we plan to make it even easier to incorporate these APIs into your
app with an upcoming Android Jetpack library.
Mejoras en el cambio automático de idioma
Android 14 added on-device, multi-language recognition in audio with automatic
switching between languages, but this can cause words to get dropped,
especially when languages switch with less of a pause between the two
utterances. Android 15 adds additional controls to help apps tune this switching
to their use case.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
confines the automatic switching to the beginning of the audio session, while
EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
deactivates the
language switching after a defined number of switches. These options are
particularly useful if you expect that there will be a single language spoken
during the session that should be autodetected.
Controles detallados de salto de línea
Starting in Android 15, a TextView
and the underlying
line breaker can preserve the given portion of text in the same line to improve
readability. You can take advantage of this line break customization by using
the <nobreak>
tag in string resources or
createNoBreakSpan
. Similarly, you can preserve words from
hyphenation by using the <nohyphen>
tag or
createNoHyphenationSpan
.
For example, the following string resource doesn't include a line break, and renders with the text "Pixel 8 Pro." breaking in an undesirable place:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
In contrast, this string resource includes the <nobreak>
tag, which wraps the
phrase "Pixel 8 Pro." and prevents line breaks:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
The difference in how these strings are rendered is shown in the following images:
Actualizaciones de OpenJDK 17
Android 15 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases.
The following key features and improvements are included:
- Quality-of-life improvements around NIO buffers
- Streams
- Additional
math
andstrictmath
methods util
package updates including sequencedcollection
,map
, andset
ByteBuffer
support inDeflater
- Security updates such as
X500PrivateCredential
and security key updates
These APIs are updated on over a billion devices running Android 12 (API level 31) and higher through Google Play System updates, so you can target the latest programming features.
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
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.
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()
ybeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
para emitir transaccionesDEFERRED
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 deIMMEDIATE
oEXCLUSIVE
. - 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 quegetTotalChangedRowCount()
muestra el recuento de la conexión actual.getLastInsertRowId()
muestra elrowid
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 continues our investment in the Android Dynamic Performance Framework (ADPF), a set of APIs that allow games and performance intensive apps to interact more directly with power and thermal systems of Android devices. On supported devices, Android 15 will add new ADPF capabilities:
- A power-efficiency mode for hint sessions to indicate that their associated threads should prefer power saving over performance, great for long-running background workloads.
- GPU and CPU work durations can both be reported in hint sessions, allowing the system to adjust CPU and GPU frequencies together to best meet workload demands.
- Thermal headroom thresholds to interpret possible thermal throttling status based on headroom prediction.
To learn more about how to use ADPF in your apps and games, head over to the documentation.
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 agrega compatibilidad con apps para detectar si se están grabando. Se invoca una devolución de llamada cada vez que la app pasa de ser visible o invisible dentro de una grabación de pantalla. Una app se considera visible si se registran actividades que pertenecen al UID del proceso de registro. De esta manera, si tu app realiza una operación sensible, puedes informar al usuario que se la está grabando.
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 lleva los Servicios de anuncios de Android hasta el nivel de extensión 10, lo que incorpora la versión más reciente de Privacy Sandbox en Android, parte de nuestro trabajo para desarrollar nuevas tecnologías que mejoren la privacidad del usuario y permitan experiencias de publicidad personalizadas y eficaces en apps para dispositivos móviles. En nuestra página de Privacy Sandbox, encontrarás más información sobre Privacy Sandbox en la Vista previa para desarrolladores de Android y programas de versiones beta que te ayudarán a comenzar.
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.
Protege archivos con fs-verity
El FileIntegrityManager
de Android 15 incluye APIs nuevas que aprovechan la potencia de la función fs-verity en el kernel de Linux. Con fs-verity, los archivos se pueden proteger con firmas criptográficas personalizadas, lo que te ayuda a asegurarte de que no se hayan alterado ni dañado. Esto mejora la seguridad, lo que te brinda protección contra posible software malicioso o modificaciones no autorizadas de archivos que podrían comprometer la funcionalidad o los datos de tu app.
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
lets apps customize Attention
Management (Do Not Disturb) rules and decide when to activate or deactivate
them. Android 15 greatly enhances these rules with the goal of improving the
user experience. The following enhancements are included:
- Adding types to
AutomaticZenRule
, allowing the system to apply special treatment to some rules. - Adding an icon to
AutomaticZenRule
, helping to make the modes be more recognizable. - Adding a
triggerDescription
string toAutomaticZenRule
that describes the conditions on which the rule should become active for the user. - Added
ZenDeviceEffects
toAutomaticZenRule
, allowing rules to trigger things like grayscale display, night mode, or dimming the wallpaper.