检查空间功能

空间功能可能会随着用户与您的应用或系统互动而发生变化,甚至可能会由您的应用本身更改(例如,进入 Home Space 或 Full Space)。为避免出现问题,您的应用需要检查空间功能,以确定当前环境支持哪些 API。

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

Jetpack Compose for XR 会创建一个 Composition Local 来检查空间功能。您可以使用此命令来检查是否已启用空间界面、空间音频、环境、透传或 3D 内容。

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

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

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

使用 SceneCore 检查空间功能

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

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

// Example 1: check if enabling passthrough mode is allowed if (xrSession.scene.spatialCapabilities.hasCapability(         SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL     ) ) {     xrSession.scene.spatialEnvironment.preferredPassthroughOpacity = 1f } // Example 2: multiple capability flags can be checked simultaneously: if (xrSession.scene.spatialCapabilities.hasCapability(         SpatialCapabilities.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL and             SpatialCapabilities.SPATIAL_CAPABILITY_3D_CONTENT     ) ) {     // ... }

另请参阅