产品动态

Android XR SDK 更新:推出开发者预览版 4

5 分钟阅读时间

今天,我们很高兴推出 Android XR SDK 的开发者预览版 4,继续专注于为头戴设备、有线 XR 眼镜和 智能眼镜统一跨设备开发。为了让我们的平台更直观,我们为外形规格采用了更具描述性的命名方式,其中 AI 眼镜现在称为音频眼镜,显示 AI 眼镜现在称为显示眼镜,这些更改将从今天开始出现在我们的文档中。

此版本包含大量更新,可帮助您为 XR 设备打造出色的体验,在 XR 头戴设备上实现更深入的沉浸式体验,并简化在音频眼镜和显示眼镜上创建增强体验的路径。 此外,我们的核心库(包括 XR 运行时、Jetpack SceneCore 和 ARCore for Jetpack XR)即将正式进入 Beta 版阶段!

为了让您能够尽早使用硬件和资源在即将推出的设备(例如显示眼镜和音频眼镜以及 XREAL 的 Project Aura)上打造沉浸式和增强体验,我们宣布推出 Android XR 开发者催化剂计划。立即了解详情并 开始申请

为音频眼镜和显示眼镜打造增强体验

首先,我们来了解一下用于增强体验的库。开发者预览版 4 推出了新的 API,可帮助您创建和测试应用。

Jetpack Projected:Device Availability 和 ProjectedTestRule API

Jetpack Projected 库有助于将应用体验从手机桥接到用户的视野范围中。我们添加了 Device Availability API,,它将佩戴状态和连接信号整合到标准 Android Lifecycle.State 值中。这样,您就可以根据设备是否佩戴来调整应用的行为。

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 */ }
        }
    }

为了简化测试,projected-testing 制品中的新 ProjectedTestRule API 可自动设置投影测试环境。这有助于您编写简洁可靠的单元测试,而无需样板代码。

// 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 和新组件

我们的显示眼镜界面库 Jetpack Compose Glimmer 现在包含 Google Sans Flex,可提高光学透视显示屏的可读性。我们还添加了几个互动组件:

  • 堆叠:专为触控板优化的群组而设计,一次显示一项内容。
  • _标题芯片_:为内容卡片提供分类和上下文。
glimmer (1).gif

为 XR 头戴设备和有线 XR 眼镜打造沉浸式体验

如果您希望为扩展现实头戴设备和有线 XR 眼镜打造完全沉浸式的体验,我们提供了一些重大更新。

Beta 版过渡和现代架构

XR 运行时、Jetpack SceneCore 和 ARCore for Jetpack XR 感知功能(深度图眼部/手部跟踪、命中测试和空间锚点)即将进入 Beta 版阶段,因此我们简化了 Jetpack XR API。我们移除了旧版 Guava 和 RxJava3 软件包,转而采用现代的 Kotlin 优先架构。

Jetpack SceneCore:glTF 和自定义网格

我们通过添加微调 3D 模型和使用 3D 模型访问特定节点的功能,扩展了 3D 模型的功能。使用 GltfModelNode,您可以修改姿态、材质和纹理等属性,甚至可以为特定节点运行 动画

// 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
)

我们还将自定义网格引入了 SceneCore。借助自定义网格,您可以以编程方式即时构建几何图形,这非常适合创建自定义 3D 模型。此功能将以实验性功能的形式推出,欢迎试用并告诉我们您的想法!

// 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 for XR:原生 glTF 支持

我们现在直接在 Compose for XR 中提供原生 glTF 支持,并使用 SpatialGltfModel。您可以将此功能与 SpatiallGltfModelState 搭配使用,以访问 glTF 模型中的 节点和 动画,也可以使用它们向 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 for Jetpack XR:有线 XR 眼镜的 Geospatial API 预览版

我们还在 ARCore for Jetpack XR 中为有线 XR 眼镜提供了 Geospatial API 的早期预览版。此更新可在 87 个国家/地区内实现与真实世界位置相关联的数字内容的高精度锚定。

通过将 ARCore 的视觉定位系统 (VPS) 与 Gemini Live API 的推理和音频功能相结合,您可以创建内容感知体验,了解用户的位置和姿态。想象一下,您可以打造一个沉浸式 AI 引导的步行游览体验,提供附近地点的实时音频描述,将数字信息与物理环境无缝融合。

立即开始打造未来

现在是开发 Android XR 的绝佳时机。随着 Jetpack XR SDK 即将进入 Beta 版阶段,以及一系列强大的新工具的推出,您可以探索以下各个领域,让您的应用体验为 XR 做好准备!  

阅读文档、探索示例并查看 XR 实验

请访问 Android 开发者官方网站,获取完整技术指南、API 参考文档和有关设置新模拟器的说明。从我们的示例和实验中获取灵感。了解我们如何使用这些 API 构建沉浸式空间布局、加载 3D 模型、探索空间音频等!

了解游戏引擎的新功能

我们已正式支持 Unreal EngineGodot,并推出了两款新工具,以加快使用 Unity 和 Android XR Interaction Framework 开发 Android XR 的速度。此外,根据您的反馈,我们推出了 Android XR Engine Hub,让您可以直接从首选引擎运行体验,

申请加入 Android XR 开发者催化剂计划

千万不要错过为最新的 Android XR 硬件打造体验的机会。立即申请,就有机会使用预发布硬件,包括我们的音频眼镜和显示眼镜原型以及 XREAL 的 Project Aura。

立即了解详情并申请

我们期待在今年晚些时候推出更多 Android XR 设备,并看到您打造的精彩 XR 体验!

如需了解此公告和所有 Google I/O 2026 更新,请访问 io.google

继续阅读