Comunidad

Now in Android #121

Lectura de 9 min
Ver el perfil de Daniel Galpin
Daniel Galpin Developer Advocate

Te damos la bienvenida a Now in Android, tu guía continua sobre las novedades y los aspectos destacados del mundo del desarrollo para Android.

Sigue leyendo para conocer las novedades de la versión beta 1 de Android 16 QPR2, la actualización de funciones de Android Studio Narwhal, Jetpack Compose 1.9, Media 3 1.8, la transformación de formas y la función Autocompletar en Compose, entre otras.

Puedes mirar un resumen en video:

 

 

También tenemos un podcast.

Sin embargo, esta publicación tiene la información más detallada, así que sigue leyendo.

Ya está disponible la versión beta 1 de Android 16 QPR2 ✨

Ya está disponible la primera versión beta de Android 16 QPR2, la versión inaugural de Android con una versión secundaria del SDK de Android. Las versiones secundarias del SDK pueden incluir APIs nuevas que extiendan las funciones de la plataforma, pero no pueden introducir cambios de comportamiento controlados por targetSdkVersion, lo que minimiza la cantidad de pruebas que debes realizar en tus apps.

sdk-release-graph.webp

Puedes llamar a las APIs nuevas verificando SDK_INT_FULL con la enumeración VERSION_CODES_FULL:

if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

VERSION_CODES_FULL no se puede usar en los atributos del manifiesto uses-sdk.

Estas son algunas actualizaciones clave de la versión beta 1 de QPR2.

IU, experiencia del sistema y accesibilidad:

  • Una opción de tema oscuro expandido invierte de forma inteligente las apps claras para los usuarios que prefieren una apariencia oscura.
  • El sistema puede generar íconos de la app con temas automáticos si tu app no proporciona una capa monocromática.
  • Las sesiones de selector interactivo mantienen activa la IU de tu app mientras la hoja de uso compartido está abierta, con ChooserManager y ChooserSession.
  • Una nueva API de transferencia de datos permite una migración de datos más confiable y segura entre Android y iOS, lo que requiere actualizaciones en el XML de las reglas de extracción de datos de tu app y en la implementación de BackupAgent.
  • El paquete android.graphics.pdf se expandió para admitir la anotación y edición de documentos PDF a través de PdfRenderer.Page.
  • Los valores de ViewConfiguration ahora se adaptan a dispositivos virtuales individuales. Migra a ViewConfiguration.get(context) para situaciones de varias pantallas.
  • Puedes obtener un control más detallado de la respuesta táctil especificando VibrationAttributes con View.performHapticFeedback(HapticFeedbackRequest).
  • Ahora, las tarjetas de Configuración rápida se pueden asignar a categorías predefinidas en el archivo AndroidManifest.xml.

Contenido multimedia y audio:

  • Decodificación de software para Immersive Audio Model and Formats (IAMF), un formato de audio espacial abierto
  • El uso compartido de audio personal para dispositivos Bluetooth LE Audio se integra directamente en el selector de salida del sistema.
  • Los usuarios pueden controlar el brillo del HDR con un control deslizante de brillo HDR/SDR
  • Los extras del selector de fotos pueden destacar álbumes o búsquedas específicas.

Conectividad:

  • Las mejoras en Companion Device Management (CDM) te permiten proporcionar íconos de dispositivos personalizados, escuchar la devolución de llamada de EVENT_ASSOCIATION_REMOVED y habilitar la verificación entre apps con DeviceId.
  • Las actualizaciones de Bluetooth incluyen compatibilidad con el análisis pasivo para BluetoothLeScanner (ScanSettings.SCAN_TYPE_PASSIVE), motivos de pérdida de vinculación (BluetoothDevice.EXTRA_BOND_LOSS_REASON) y recuperación directa de UUID de servicio (BluetoothDevice.EXTRA_UUID_LE).
  • Las actualizaciones de medición de distancia de Wi-Fi RTT (RttStationRangingParams) admiten la medición de distancia en relación con las estaciones.
  • Hay un nuevo PhoneNumberManager disponible para analizar y validar números de teléfono de encabezados de URI asociados a P de IMS.
  • Las mejoras de privacidad de la red de MediaRouter permiten transmitir contenido a través de nuevos medios, como Bluetooth y UWB. Debes usar el selector de salida del sistema o solicitar permisos de NEARBY_DEVICES para los selectores personalizados en la app.

Privacidad y seguridad:

  • Un nuevo estado de seguridad a nivel del sistema, Bloqueo seguro del dispositivo, bloquea los dispositivos y requiere autenticación principal para desbloquearlos.
  • Se agregó un botón de activación para el usuario en la Protección ante robo del teléfono para habilitar o inhabilitar el “Bloqueo por autenticación fallida”.

Productividad de los desarrolladores:

  • Las nuevas APIs de AppWidgetManager te permiten consultar las métricas de participación de los widgets.
  • Las apps depurables instaladas a través de ADB ahora recibirán advertencias tempranas sobre la compatibilidad con el tamaño de página de 16 KB.
  • ProfilingManager agrega compatibilidad con nuevos activadores de generación de perfiles iniciados por el sistema y requestRunningSystemTrace para capturar seguimientos en segundo plano.
  • Un botón de activación de “Registro de impresión detallado” en las Opciones para desarrolladores proporciona información de depuración adicional para el framework de impresión de Android.
  • Se habilitaron pruebas más sólidas para las experiencias de escritorio y de varias pantallas con las nuevas APIs de UiAutomation para capturas de pantalla en pantallas no predeterminadas y AccessibilityWindowInfo.refresh públicas.
  • Se agregó compatibilidad con la API para la nueva biblioteca androidx.core:core-backported-fixes.
  • Ahora, las apps de GUI son compatibles con la terminal de Linux
  • WindowInspector.addGlobalWindowViewsListener admite notificaciones de cambio de vista raíz en tiempo real.

Puedes inscribir cualquier dispositivo Pixel compatible para recibir actualizaciones de la versión beta de forma inalámbrica o usar imágenes del sistema de 64 bits con Android Emulator en Android Studio. La estabilidad de la plataforma está prevista para octubre de 2025.

La actualización de funciones de Android Studio Narwhal ya es estable. Comienza a usar el modo de agente 🐳

narwhal.webp

La actualización de funciones de Android Studio Narwhal ya es estable. Entre las nuevas funciones y mejoras, se incluyen las siguientes:

Transmisión de dispositivos Android con tecnología de Firebase

device-streaming.webp

Android Device Streaming, con tecnología de Firebase, introdujo compatibilidad estable con Android Partner Device Labs, lo que te permite conectarte de forma remota a dispositivos Android físicos alojados por socios OEM, incluidos Samsung, Xiaomi, OPPO, OnePlus y vivo.

Aceleramos el desarrollo con lanzamientos mensuales para Android Studio, con una frecuencia 2 veces mayor que antes

accelarating-releases.webp

Android Studio está cambiando a un ritmo de lanzamiento estable mensual para que puedas obtener nuevas funciones y correcciones de errores críticos más rápido. Si bien el IDE de Android Studio se actualizará mensualmente, se introducirán nuevas versiones de la plataforma IntelliJ cada pocos meses, y las actualizaciones de funciones completarán las versiones estables intermedias. Android Emulator y el complemento de Android para Gradle seguirán actualizándose por separado cada dos meses. Este programa de lanzamientos acelerado se respalda con inversiones a largo plazo en infraestructura de pruebas.

Novedades de la versión de agosto de 2025 de Jetpack Compose 🚀

jetpack-compose.webp

La versión de agosto de 2025 de Jetpack Compose (versión 1.9) ya es estable. En esta versión, se presentan Modifier.dropShadow y Modifier.innerShadow para renderizar efectos de sombra de cuadro. Los nuevos modificadores onVisibilityChanged y onFirstVisible te permiten hacer un seguimiento de la visibilidad de los elementos para las actualizaciones de la IU o el registro de impresiones. Puedes aplicar un estilo enriquecido dentro de OutputTransformation con TextFieldBuffer.addStyle para las transformaciones de texto.

Los componentes básicos de LazyLayout ahora son estables, y puedes definir un LazyLayoutCacheWindow para mejorar el rendimiento de Lazy List y Grid con una carga previa mejorada. Scrollable2D habilita el desplazamiento bidimensional, incluidos el desplazamiento rápido y el desplazamiento anidado, con varias mejoras para la interoperabilidad de desplazamiento y desplazamiento anidado con vistas. Una API de aceptación (Composer.setDiagnosticStackTraceEnabled) proporciona detalles más enriquecidos sobre la ubicación de las fallas en los seguimientos de pila, lo que se recomienda solo para las compilaciones de depuración. Las nuevas anotaciones @RememberInComposition y @FrequentlyChangingValue, junto con las verificaciones de Lint asociadas, están disponibles en una nueva biblioteca de anotaciones de tiempo de ejecución. Los menús contextuales se pueden personalizar con Modifier.appendTextContextMenuComponents y Modifier.filterTextContextMenuComponents. Ahora se requiere la versión 8.8.2 o posterior del complemento de Android para Gradle (AGP) o Lint.

Media3 1.8.0: Novedades 🚀

media3.webp

Ya está disponible Media3 1.8.0, que incluye varias funciones y mejoras nuevas. ExoPlayer obtiene un modo de arrastre para las búsquedas frecuentes que realizan los usuarios, que puedes habilitar a través de ExoPlayer.setScrubbingModeEnabled. HlsInterstitialsAdsLoader ahora admite transmisiones en vivo para la inserción de anuncios guiada por el servidor.

Se actualizó MetadataRetriever para que puedas recuperar las duraciones de los elementos multimedia sin reproducción. En el caso de Transformer, la versión presenta operaciones de recorte más rápidas con listas de edición de MP4 con experimentalSetMp4EditListTrimEnabled y optimizaciones de codificador específicas del chipset a través de CodecDbLite, que se habilitan llamando a setEnableCodecDbLite en DefaultEncoderFactory.Builder.

Entre las actualizaciones adicionales, se incluyen la compatibilidad con descargas parciales en Downloader con PreCacheHelper, el enrutamiento automático de audio de RE en ExoPlayer y las interacciones más eficientes de MediaCodec. El módulo MediaSession ahora mantiene las notificaciones visibles durante más tiempo de forma predeterminada, y la app de demostración de la sesión multimedia muestra la funcionalidad de reanudación de la reproducción. Una nueva app de demostración de Composition, compilada con Kotlin y Compose, muestra la edición avanzada de videos con varios recursos.

Artículos 📚

#WeArePlay: Conoce a las personas que programan un mundo más sustentable

weareplay.webp

La iniciativa #WeArePlay destaca las apps y los juegos para Android que abordan desafíos ambientales. El juego BoRa — Iguaçu National Park, desarrollado por Mayla, Flávia, Andréia y Ariane, ofrece experiencias interactivas accesibles y ludificadas para la educación sobre la naturaleza durante las visitas al parque. La app de Louis y Justin, CyberTracker, permite que los rastreadores indígenas analfabetos registren datos de biodiversidad a través de una interfaz basada en íconos, lo que respalda las iniciativas de conservación. Por último, Earth5R, cofundada por Bharati y Saurabh, ofrece educación ambiental y conecta a los usuarios con pasantías y proyectos para desarrollar habilidades para la economía ecológica.

¿Qué es HDR? 🌟

hdr.webp

El alto rango dinámico (HDR) permite aumentar el brillo máximo más allá del rango dinámico estándar (SDR) para los desarrolladores de Android, lo que ofrece una fidelidad visual mejorada. Android admite HDR para videos e imágenes, incluidas tecnologías como UltraHDR para la retrocompatibilidad.

Comprender el color implica tres componentes:

  • Profundidad de bits: Define la precisión de la representación del color, y una mayor profundidad ofrece transiciones más fluidas.
  • Función de transferencia: Asigna valores numéricos de píxeles a la luminancia o el color que se muestran, lo que se ajusta a la respuesta visual humana no lineal. Algunos ejemplos son sRGB, HLG y PQ.
  • Gama de colores: Representa el rango de colores que puede reproducir un dispositivo.

Conceptos erróneos comunes sobre el HDR:

  • Colores vivos: Las gamas de colores más amplias, como Display P3 y Adobe RGB, estaban disponibles antes de HDR, y la mayoría de las pantallas aún se recortan a P3, incluso con contenido BT.2020.
  • Más contraste y mejor detalle de los negros: El HDR no ofrece de forma inherente negros más oscuros que el SDR en la misma pantalla. Las pantallas OLED proporcionan un contraste infinito para ambos. Si bien PQ asigna más bits a las regiones oscuras, no es una función de HDR universal.
  • Mayor profundidad de bits: Si bien algunos perfiles de video HDR (p. ej., HDR10) usan transmisiones de 10 o 12 bits, esto es específico de esos perfiles y no es inherente al HDR en sí. Las profundidades de bits más altas también son comunes en otros formatos de imagen.

El HDR significa principalmente un brillo máximo más alto. Este “margen de HDR” se define como una región flotante en relación con el SDR. Mientras que el video HDR tradicional suele codificar un margen fijo, las pantallas modernas usan un margen dinámico, lo que puede generar diferencias de calidad. Las tecnologías como Ultra HDR y los mapas de ganancia ofrecen alternativas con un uso eficiente de bits. El kit de herramientas de IU de Android utiliza la API de extendedRangeBrightness para ofrecer experiencias de HDR, incluso con RGBA_8888.

Videos 📹

Elementos compartidos avanzados con transformación de formas | Sugerencias de Jetpack Compose

Jetpack Compose ahora habilita transiciones avanzadas de elementos compartidos, transformaciones de formas sofisticadas y animaciones de revelación. Los desarrolladores pueden configurar SharedTransitionLayout en el nivel superior de la app y usar Modifier.sharedBounds para vincular elementos.

La transformación de formas es una nueva función clave que se logra aprovechando la biblioteca de formas de gráficos de AndroidX de Material 3. Esto implica crear un objeto Morph con formas de inicio y finalización definidas, controlar su progreso con animateFloat (de AnimatedVisibilityScope) y aplicarlo como un clip a través de un OverlayClip personalizado. Los efectos de revelación usan skipToLookaheadSize y skipToLookaheadPosition. Todas estas animaciones avanzadas también son compatibles con los gestos atrás predictivos.

Gemini multimodal en Android Studio: Desarrollo de IU potenciado por IA

La IA de Gemini en Android Studio ayuda en el desarrollo de la IU, ya que genera código a partir de diseños (incluida la conversión de imagen a código), crea vistas previas de Compose con datos sintéticos y define mejor la IU existente a través de comandos directos.

Consume un SDK habilitado para el entorno de ejecución

Android 14 presenta el entorno de ejecución de SDK, una nueva tecnología que aísla los SDKs de terceros en una zona de pruebas de procesos segura y separada para mejorar la privacidad y la seguridad.

Para desarrolladores:

  • Los SDKs habilitados para el entorno de ejecución (RE) se ejecutan en este proceso independiente.
  • Los SDKs adaptables al entorno de ejecución (RA) funcionan como intermediarios dentro de tu app.
  • Carga los SDKs de RE con SdkSandboxManagerCompat y observa las restricciones (p.ej., primer plano, carga única).
  • Las herramientas de shim simplifican la comunicación entre procesos de bajo nivel.
  • Renderiza la IU de los SDKs de RE con SandboxedSdkView y SandboxedUiAdapter.
  • Inicia actividades desde el entorno de ejecución de SDK con SdkActivityLauncher.

Transformación de formas de Material 3 para Wear OS | Sugerencias de Jetpack Compose

Material 3 para Wear OS para Compose ahora simplifica la transformación de formas. Los desarrolladores pueden agregar fácilmente cambios de forma animados a los botones redondos con IconButtonDefaults.animatedShapes, crear grupos de botones que animen los cambios de ancho con el componente ButtonGroup y Modifier.animateWidth(), y compilar listas de desplazamiento vertical (TransformingLazyColumn) en las que los elementos se escalen y transformen con TransformationSpec a medida que se acercan a los bordes de la pantalla.

Versiones de AndroidX 🚀

Aquí tienes un resumen de los cambios de AndroidX, con prioridad en los más relevantes para los desarrolladores de apps para Android:

Cambio general que afecta a las bibliotecas de Compose:

  • Se aumentó el valor predeterminado de minSdk a la API 23: Para androidx.compose animation, foundation, material, runtime y ui, la versión mínima predeterminada del SDK se cambió de la API 21 a la API 23. Esto significa que, si usas las versiones alfa más recientes de estas bibliotecas de Compose, tu app requerirá de forma implícita Android 6.0 (Marshmallow) o una versión posterior.

Cambios clave para los desarrolladores de Compose:

  • Nueva API de retención (entorno de ejecución de Compose): Se presenta una API de retención similar a rememberSaveable, pero para valores que abandonan la jerarquía de composición sin serializarse. Tiene una vida útil más corta que los valores guardados y se comporta de manera similar a un ViewModel, lo que proporciona una nueva forma de administrar el estado de los elementos componibles que podrían entrar y salir de la composición.
  • Transiciones de elementos compartidos mejoradas (Compose Animation y UI): Se agregaron nuevas APIs para habilitar o inhabilitar de forma dinámica los elementos compartidos, tener en cuenta las transiciones en curso y establecer límites de destino alternativos cuando se elimina un elemento compartido. También hay un nuevo Modifier.skipToLookaheadPosition disponible para fijar diseños.
  • Precarga mejorada de Pager (Compose Foundation): La estrategia de precarga de Pager ahora usa una “ventana de caché” (1 tamaño de viewport) en lugar de un solo elemento, y la precarga inicial está habilitada de forma predeterminada. Los elementos también se conservan durante más tiempo para que el desplazamiento sea más fluido.
  • Mejoras en el manejo del enfoque para el mouse y el panel táctil (Compose Foundation y la IU): ComposeViews ahora borrará automáticamente el enfoque cuando se produzca un evento de puntero hacia abajo (desde el mouse o el panel táctil) fuera del nodo enfocado. Puedes inhabilitar esta opción.
  • Rectángulos de enfoque personalizables (Compose Foundation): FocusProperties ahora te permite definir un área de enfoque personalizada en lugar de usar el cuadro delimitador de forma predeterminada, lo que mejora el recorrido del enfoque y la lógica de “mantener a la vista” en los contenedores desplazables.
  • LifecycleOwner Composable (Lifecycle): Un nuevo elemento componible permite crear instancias de LifecycleOwner con alcance directamente dentro del árbol de la IU. Esto es particularmente útil para administrar los ciclos de vida de los componentes de forma independiente y para bibliotecas como Navigation.
  • Compatibilidad con tipos que admiten valores nulos en SavedStateHandle (Lifecycle y SavedState): Se simplificó el guardado y el restablecimiento de propiedades que admiten valores nulos con compatibilidad nativa en SavedStateHandle y SavedStateRegistryOwner.
  • Nuevo LineHeightStyle.Mode.Tight (Compose Foundation y UI): Un nuevo modo Tight ayuda a aplicar alturas de línea más pequeñas, incluso si eso significa cortar glifos más altos, lo que ofrece un control de diseño de texto más preciso.
  • Presionar dos veces para seleccionar una palabra (Compose Foundation): Se agregó compatibilidad para presionar dos veces y seleccionar palabras en SelectionContainer y BasicTextField.
  • Cambios en el comportamiento de WindowInsets (IU y Foundation de Compose):
    ◦ Se agregó una nueva API de WindowInsets.cutoutPath para obtener la ruta de acceso del corte de pantalla.
    ◦ Se quitó la marca isWindowInsetsDefaultPassThroughEnabled, por lo que WindowInsets se establece de forma predeterminada en no consumir, lo que permite que las vistas secundarias las reciban.
  • AndroidView requestRectangleOnScreen Corrección (Compose Foundation): Las solicitudes que realizan las AndroidViews (p.ej., EditText que intenta permanecer en pantalla) ahora se propagan correctamente a Compose.
  • Mejoras en el desplazamiento con la rueda del mouse en 2D (Compose Foundation y IU): Se mejoró la compatibilidad con los eventos de desplazamiento con la rueda del mouse en 2D, con nuevas APIs de prueba y un parámetro para controlar el comportamiento.

Nuevas bibliotecas y utilidades:

  • androidx.core:core-backported-fixes (biblioteca nueva): Esta nueva biblioteca permite que los desarrolladores verifiquen si se aplicaron correcciones de errores críticos (p.ej., problemas a nivel de la plataforma, como errores específicos de la cámara) en un dispositivo. Esto permite ofrecer diferentes experiencias del usuario según si se resuelve o no un error conocido.

Otros cambios notables:

  • Games Activity y Games Input: Se agregó compatibilidad predeterminada con tamaños de página de 16 KB y compatibilidad con mouse para GameActivity.
  • Posicionamiento de información sobre la herramienta de Material 3: Se agregaron más proveedores de posición para la información sobre la herramienta, lo que permite colocarla arriba, abajo, a la izquierda o a la derecha del ancla.
  • Material3 DatePicker Correcciones: Se garantiza que DatePicker respete su propia configuración regional para el formato de números y se corrigen los problemas de visualización de derecha a izquierda.
  • Compatibilidad con display_override de TWA (navegador): Se agregó compatibilidad con la propiedad de manifiesto de TWA display_override, lo que proporciona más control sobre la visualización de TWA.
  • Iniciar la URL inicial en una app externa (navegador): Se agregó un intent para permitir que se inicie la URL inicial de una TWA en un navegador externo.

Android Developers Backstage

Android Developers Backstage está de vuelta con otro episodio.

Autocompletar en Compose

Jetpack Compose 1.8 presenta capacidades de autocompletado significativamente mejoradas, que aprovechan el sistema de semántica de Compose. Ahora, los desarrolladores pueden integrar fácilmente la función Autocompletar a nivel del sistema con solo etiquetar los campos de texto con la semántica de tipo de contenido relevante (p.ej., nombre de usuario, contraseña), lo que elimina la necesidad de administrar manualmente el árbol de Autocompletar y mejora el rendimiento.

 

Ahora bien… 👋

Eso es todo por esta edición, con cobertura de la versión beta 1 de Android 16 QPR2, la actualización de funciones de Android Studio Narwhal, Jetpack Compose 1.9, Media 3 1.8, Shape Morphing y Autofill en Compose, y mucho más.

Vuelve pronto para ver la próxima actualización del universo de desarrolladores de Android.

Escrito por:
Continuar leyendo