Novedades sobre productos

Actualizaciones del SDK de Android XR: Presentamos la versión preliminar para desarrolladores 4

Lectura de 5 min

Hoy, nos complace lanzar la versión preliminar para desarrolladores 4 del SDK de Android XR, con la que seguimos enfocándonos en unificar el desarrollo en varios dispositivos para visores, lentes de realidad extendida con cable y lentes inteligentes. Para que nuestra plataforma siga siendo intuitiva, adoptaremos nombres más descriptivos para nuestros factores de forma. Por ejemplo, los lentes con IA ahora se llamarán lentes de audio y los lentes con IA y pantalla ahora se llamarán lentes con pantalla. Estos cambios aparecerán en nuestra documentación a partir de hoy. 

Esta versión incluye muchas actualizaciones que te ayudan a crear experiencias increíbles para dispositivos de realidad extendida, habilitar experiencias inmersivas más profundas en visores de realidad extendida y optimizar la ruta para crear experiencias aumentadas en lentes de audio y pantalla. Además, nuestras bibliotecas principales, incluidas XR Runtime, Jetpack SceneCore y ARCore para Jetpack XR, pronto pasarán oficialmente a la versión beta.

Para brindarte acceso anticipado a  hardware y recursos  para crear experiencias inmersivas y de realidad aumentada en dispositivos futuros, como lentes de audio y pantalla, y el Project Aura de XREAL, anunciamos el Programa Catalyst para desarrolladores de Android XR. Obtén más información y comienza tu solicitud hoy mismo. 

Creación de experiencias aumentadas para lentes de audio y visualización

La versión preliminar para desarrolladores 4, que es el punto de partida de nuestras bibliotecas para experiencias aumentadas, presenta nuevas APIs que te ayudan a crear y probar tus apps.

Jetpack Projected: APIs de Device Availability y ProjectedTestRule

La biblioteca de Jetpack Projected ayuda a conectar las experiencias de la app desde el teléfono hasta el campo visual del usuario. Agregamos la API de Device Availability, que consolida los indicadores de estado y conectividad del dispositivo Wear en valores estándar de Lifecycle.State de Android. Esto te permite ajustar el comportamiento de tus aplicaciones según si se usa el dispositivo.

val xrDevice = XrDevice.getCurrentDevice(projectedContext)

// Observe the device lifecycle flow
xrDevice.getLifecycle().currentStateFlow
    .collect { state ->
        when (state) {
            Lifecycle.State.STARTED -> { /* Device is available (worn) */ }
            Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ }
            Lifecycle.State.DESTROYED -> { /* Device is DISCONNECTED */ }
        }
    }

Para simplificar las pruebas, la nueva API de ProjectedTestRule en el artefacto projected-testing automatiza la configuración de los entornos de prueba proyectados. Esto te ayuda a escribir pruebas de unidades limpias y confiables sin el código estándar.

// from the 'androidx.xr.projected:projected-testing:1.0.0-alpha07' artifact
@get:Rule
val projectedTestRule = ProjectedTestRule()

@Test
fun testProjectedContextInitialization() {
    // by default, ProjectedTestRule automatically creates and connects
    // a projected device before each test
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    // assert the projected context is successfully initialized
    assertThat(projectedContext).isNotNull()
}

Jetpack Compose Glimmer: Google Sans Flex y componentes nuevos

Nuestra biblioteca de IU para lentes de visualización, Jetpack Compose Glimmer, ahora incluye Google Sans Flex para mejorar la legibilidad en pantallas ópticas transparentes. También agregamos varios componentes interactivos:

  • Pilas: Diseñadas para grupos optimizados para el panel táctil, que muestran un elemento a la vez.
  • Chips de título: Proporcionan categorización y contexto para las tarjetas de contenido.
glimmer (1).gif

Cómo crear experiencias inmersivas para visores de realidad extendida y lentes de realidad extendida con cable

Si quieres crear experiencias completamente inmersivas para visores de realidad extendida y lentes de realidad extendida con cable, tenemos varias actualizaciones importantes.

Transición a beta y arquitectura moderna

XR Runtime, Jetpack SceneCore y las funciones de percepción de ARCore para Jetpack XR (Mapas de profundidadSeguimiento de ojos y manos, pruebas de impacto y anclajes espaciales) pronto pasarán a la versión beta, por lo que optimizamos las APIs de Jetpack XR. Quitamos los paquetes heredados de Guava y RxJava3 en favor de una arquitectura moderna que prioriza Kotlin.

Jetpack SceneCore: glTF y mallas personalizadas

Expandimos las capacidades de los modelos 3D agregando la posibilidad de ajustarlos y acceder a nodos específicos con un modelo 3D. Con GltfModelNode, puedes modificar propiedades como la pose, los materiales y las texturas, y hasta ejecutar animaciones para nodos específicos.

// Create a new PBR material
pbrMaterial = KhronosPbrMaterial.create(
    session = xrSession,
    alphaMode = AlphaMode.OPAQUE
)

// Load a texture.
val texture = Texture.create(
    session = xrSession,
    path = Path("textures/texture_name.png")
)

// Apply the texture and configure occlusion to define how the material handles ambient lighting.
pbrMaterial.setOcclusionTexture(
    texture = texture,
    strength = 0.5f
)

// Access the hierarchy of nodes within the model entity.
val entityNodes = entity.nodes

// Find the specific node to apply the material override.
val myEntityNode = entityNodes.find { it.name == "node_name" }

// Apply the PBR material to the node.
myEntityNode?.setMaterialOverride(
   material = newMaterial
)

También agregaremos mallas personalizadas a SceneCore. Las mallas personalizadas te permiten crear geometría sobre la marcha de forma programática, lo que es ideal para crear modelos 3D personalizados. Esta función se lanzará como experimental, así que pruébala y danos tu opinión.

// Create the mesh
val roadMesh =
    CustomMesh.BuilderFromMeshData(session, roadVertexLayout)
        .addVertexData(ByteBufferRegion(roadDataBuffer, 0, vertexDataSize))
        .setIndexData(ByteBufferRegion(roadDataBuffer, vertexDataSize, indexDataSize))
        .setTopology(MeshSubsetTopology.TRIANGLES)
        .build()

// Define the material
val roadMaterial = KhronosPbrMaterial.create(session, AlphaMode.OPAQUE)

// Instantiate the entity using the custom mesh and material
val roadEntity =
    MeshEntity.create(
        session,
        roadMesh,
        listOf(roadMaterial),
        pose = roadPose,
    )

Compose para XR: Compatibilidad nativa con glTF

Ahora tenemos compatibilidad nativa con glTF directamente en Compose para XR con SpatialGltfModel. Usa este elemento junto con SpatiallGltfModelState para acceder a nodosanimaciones en el modelo glTF, o bien úsalos para agregar texturas y materiales a tus modelos 3D.

val myGltfModelState = rememberSpatialGltfModelState(
        source = SpatialGltfModelSource.fromPath(
            Paths.get("models/my_animated_model.glb")
        )
    )

    val myGltfAnimation =
        myGltfModelState.animations.find { it.name == "animation_name" }

    DisposableEffect(myGltfAnimation) {
        myGltfAnimation?.loop()

        onDispose {
            myGltfAnimation?.stop()
        }
    }

    SpatialGltfModel(state = myGltfModelState, modifier = modifier)

ARCore para Jetpack XR: Vista previa de la API de Geospatial para lentes de RE con cable

También proporcionamos una vista previa anticipada de la API de Geospatial para los lentes XR con cable en ARCore para Jetpack XR. Esta actualización permite anclar con alta precisión el contenido digital vinculado a ubicaciones del mundo real en más de 87 países.

Si combinas el sistema de posicionamiento visual (VPS) de ARCore con las capacidades de razonamiento y audio de la API de Gemini Live, puedes crear experiencias que tengan en cuenta el contexto y comprendan la ubicación y la posición del usuario. Imagina crear un recorrido a pie inmersivo guiado por IA que proporcione descripciones de audio en tiempo real de los lugares cercanos, combinando a la perfección la información digital con el entorno físico.

Comienza a construir el futuro hoy mismo

Es un momento increíble para desarrollar en Android XR. Con el SDK de Jetpack XR que pronto pasará a la versión beta y un sólido conjunto de herramientas nuevas a tu alcance, explora cada una de las siguientes áreas para preparar las experiencias de tu app para la realidad extendida.  

Lee la documentación, explora las muestras y consulta los experimentos de XR

Visita el sitio oficial para desarrolladores de Android para obtener guías técnicas completas, referencias de la API y las instrucciones para configurar el nuevo emulador. Inspírate con nuestras muestras y experimentos. Descubre cómo usamos estas APIs para crear diseños espaciales envolventes, cargar modelos 3D, explorar el audio espacial y mucho más.

Descubre las novedades de los motores de juegos

Agregamos compatibilidad oficial con Unreal EngineGodot, y lanzamos dos herramientas nuevas para acelerar el desarrollo para Android XR con Unity y el Android XR Interaction Framework. Además, según tus comentarios, presentamos el Centro de motores de Android XR para que puedas ejecutar tus experiencias directamente desde tu motor preferido.

Postúlate para el Programa Catalyst para desarrolladores de Android XR

No pierdas la oportunidad de crear contenido para el hardware de Android XR más reciente. Postúlate hoy mismo para tener la oportunidad de acceder a hardware previo al lanzamiento, incluidos nuestros prototipos de lentes de audio y pantalla, y el Project Aura de XREAL.

Obtén más información y postúlate hoy mismo

Esperamos ver las increíbles experiencias de XR que crearás a medida que nos acerquemos al lanzamiento de más dispositivos Android XR a finales de este año.

Explora este anuncio y todas las actualizaciones de Google I/O 2026 en io.google.

Escrito por:

Seguir leyendo