Проверьте пространственные возможности

Пространственные возможности могут меняться по мере взаимодействия пользователей с вашим приложением или системой, или даже могут быть изменены самим вашим приложением, например, при переходе в Home Space или Full Space. Чтобы избежать проблем, вашему приложению необходимо проверять пространственные возможности, чтобы определить, какие API поддерживаются в текущей среде.

Проверьте пространственные возможности с помощью Jetpack Compose для XR

Jetpack Compose для XR создает Composition Local для проверки пространственных возможностей. Используйте это, чтобы проверить, включены ли пространственный пользовательский интерфейс, пространственный звук, окружение, сквозной проход или 3D-контент.

Вы можете использовать LocalSpatialCapabilities.current , чтобы проверить, доступны ли в данный момент следующие пространственные возможности:

  • isSpatialUiEnabled : Указывает, может ли приложение создавать пространственные элементы пользовательского интерфейса (например, SpatialPanel ).
  • isContent3dEnabled : Указывает, может ли приложение создавать 3D-объекты.
  • isAppEnvironmentEnabled : Указывает, может ли приложение устанавливать среду.
  • isPassthroughControlEnabled : указывает, может ли приложение управлять состоянием сквозного доступа.
  • isSpatialAudioEnabled : Указывает, может ли приложение использовать пространственный звук.

В следующем примере показано, как проверить, включен ли пространственный пользовательский интерфейс:

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
    )
) {
    // ...
}

Смотрите также