Novedades de 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 lo que continuamos nuestro enfoque en unificar el desarrollo multidispositivo para visores, lentes de RE con cable y lentes inteligentes. Para que nuestra plataforma siga siendo intuitiva, adoptaremos nombres más descriptivos para nuestros factores de forma, en los que los lentes con IA ahora son lentes con audio y los lentes con IA con pantalla ahora son lentes con pantalla. Estos cambios aparecerán en nuestra documentación a partir de hoy. 

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

Para brindarte acceso anticipado al  hardware y los recursos  necesarios para crear experiencias inmersivas y de realidad aumentada en los próximos dispositivos, como lentes con pantalla y audio, y el Project Aura de XREAL, anunciamos el Programa Android XR Developer Catalyst. Obtén más información y comienza tu postulación hoy mismo. 

Cómo crear experiencias de realidad aumentada para lentes con audio y con pantalla

Para comenzar con nuestras bibliotecas de experiencias aumentadas, la Versión preliminar para desarrolladores 4 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 en la app desde el teléfono hasta el campo visual del usuario. Agregamos la API de Device Availability, que consolida las señales de estado de uso y conectividad en valores estándar de Android Lifecycle.State. Esto te permite ajustar el comportamiento de tus aplicaciones en función de 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 pruebas 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 nuevos componentes

Nuestra biblioteca de IU para lentes con pantalla, 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 paneles táctiles, muestran un elemento a la vez.
  • Chips de título: Proporcionan categorización y contexto para las tarjetas de contenido.
glimmer (1).gif

Crea experiencias inmersivas para visores de RE y lentes de RE con cable

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

Transición de la versión beta y arquitectura moderna

El entorno de ejecución de XR, Jetpack SceneCore y las funciones de percepción de ARCore para Jetpack XR (mapas de profundidad, seguimiento ocular y de manos, pruebas de posicionamiento 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 para dar paso a una arquitectura moderna que prioriza Kotlin.

Jetpack SceneCore: glTF y mallas personalizadas

Estamos expandiendo las capacidades de los modelos 3D con 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 incorporaremos 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 RE: Compatibilidad nativa con glTF

Ahora, contamos con compatibilidad nativa con glTF directamente en Compose para XR con SpatialGltfModel. Usa esto junto con SpatiallGltfModelState para acceder a nodos y animaciones en el modelo de glTF, o ú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: Versión preliminar de la API de Geospatial para lentes de realidad extendida con cable

También proporcionamos una versión preliminar anticipada de la API de Geospatial para lentes de RE con cable en ARCore para Jetpack XR. Esta actualización permite fijar contenido digital con alta precisión en 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 contextuales que comprendan tanto la ubicación como la posición del usuario. Imagina que creas un recorrido a pie inmersivo guiado por IA que proporciona audiodescripciones en tiempo real de lugares cercanos, combinando sin problemas la información digital con el entorno físico.

Comienza a construir el futuro hoy mismo

Es un momento increíble para desarrollar para Android XR. Con el SDK de Jetpack XR que pronto pasará a la versión beta y un conjunto sólido 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 RE

Visita el sitio oficial para desarrolladores de Android para obtener guías técnicas completas, referencias de la API e 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 en 3D, explorar el audio espacial y mucho más.

Descubre las novedades para los motores de juegos

Agregamos compatibilidad oficial con Unreal Engine y Godot, y lanzamos dos herramientas nuevas para acelerar el desarrollo para Android XR con Unity y el Android XR Interaction Framework. Además, según sus comentarios, presentamos el Android XR Engine Hub para que puedan ejecutar sus experiencias directamente desde su motor preferido,

Postúlate para el Android XR Developer Catalyst Program

No te pierdas la oportunidad de crear contenido para el hardware de Android XR más reciente. Postúlate hoy para tener la oportunidad de acceder a hardware previo al lanzamiento, incluidos nuestros prototipos de lentes con 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 RE que crees a medida que nos acercamos al lanzamiento de más dispositivos Android XR más adelante este año.

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

Escrito por:
Continuar leyendo