检查空间功能

适用的 XR 设备
本指南可帮助您为以下类型的 XR 设备打造优质体验。
扩展现实头戴设备
有线扩展现实眼镜

空间功能可能因设备而异,并且会随着用户与应用或系统的互动而变化。它们甚至可以由应用本身更改,例如进入主共享空间或全沉浸空间。为避免出现问题,应用需要检查空间功能,以确定当前环境中支持哪些 API。

使用 Jetpack Compose for XR 检查空间功能

Jetpack Compose for XR 会创建一个本地组合来检查空间功能。使用此功能检查是否启用了空间界面、空间音频、环境、透视或 3D 内容。

您可以使用 LocalSpatialCapabilities.current 检查当前是否提供以下 空间功能:

以下示例展示了如何检查是否启用了空间界面:

if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier
                .width(1488.dp)
                .fillMaxHeight()
        ) {
            AppContent()
        }
    }
} else {
    AppContent()
}

使用 SceneCore 检查空间功能

使用 SceneCore 库时,您必须创建一个 会话。创建会话后,使用 spatialCapabilities 会话的 scene 查询当前可用的空间功能。

您还可以选择订阅回调 addSpatialCapabilitiesChangedListener,以便在空间 功能发生更改时收到通知。

// Example 1: check if enabling passthrough mode is allowed
if (xrSession.scene.spatialCapabilities.contains(
        SpatialCapability.PASSTHROUGH_CONTROL
    )
) {
    xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f
}
// Example 2: multiple capability flags can be checked simultaneously:
if (xrSession.scene.spatialCapabilities.contains(SpatialCapability.PASSTHROUGH_CONTROL) &&
    xrSession.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)
) {
    // ...
}

使用混合模式检查设备的显示功能

在 Android XR 上,XR 头戴设备和有线 XR 眼镜的硬件功能各不相同,尤其是在显示屏类型方面。您可能需要调整应用界面和渲染对象的颜色,以最大限度地提高可见性,这可能会受到显示类型和设备采用的首选混合模式的影响。DisplayBlendMode API 提供设备的混合模式 功能以进行渲染。使用此 API 确定如何将虚拟内容添加到现实世界。

以下是一些需要注意的混合模式类型:

  • ADDITIVE:通过添加红色、绿色和蓝色分量的像素值,将虚拟内容添加到现实世界。系统会忽略 Alpha,黑色像素显示为透明。
  • ALPHA_BLEND:通过根据 Alpha 分量对像素值进行 Alpha 混合,将虚拟内容添加到现实世界。
  • NO_DISPLAY:设备不支持混合。

使用 XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode()Jetpack XR 运行时库 检查正在使用的混合模式类型 并根据需要进行调整。

另请参阅