檢查空間功能

空間功能可能會隨著使用者與應用程式或系統互動而變更,甚至可能會由應用程式本身變更,例如移至首頁空間或全螢幕模式。為避免發生問題,應用程式需要檢查空間功能,以判斷目前環境支援哪些 API。

使用適用於 XR 的 Jetpack Compose 檢查空間功能

適用於 XR 的 Jetpack Compose 會建立 Composition Local,用於檢查空間功能。可用於檢查是否已啟用空間 UI、空間音訊、環境、直通或 3D 內容。

您可以使用 LocalSpatialCapabilities.current 檢查目前是否提供下列空間功能:

以下範例說明如何檢查是否已啟用空間 UI:

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.setPassthroughOpacityPreference(0f)
}
// 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
    )
) {
    // ...
}

另請參閱