Пространственные возможности могут меняться по мере взаимодействия пользователей с вашим приложением или системой, или даже могут быть изменены самим вашим приложением, например, при переходе в 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
для сеанса, чтобы запросить, какие пространственные возможности доступны в данный момент.
-
SPATIAL_CAPABILITY_3D_CONTENT
: Действие может создавать 3D-контент. -
SPATIAL_CAPABILITY_APP_ENVIRONMENT
: Действие может устанавливать собственную среду. -
SPATIAL_CAPABILITY_EMBED_ACTIVITY
: Действие может пространственно встраивать другое действие. -
SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: Действие может включать или отключать сквозную передачу. -
SPATIAL_CAPABILITY_SPATIAL_AUDIO
: Действие может использовать пространственный звук. -
SPATIAL_CAPABILITY_UI
: Действие может самопространствовать (например, добавляя пространственную панель).
Вы также можете подписаться на обратный вызов 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 ) ) { // ... }
Смотрите также
- Создать сессию
- Переход между HSM и FSM
- Добавьте пространственную среду в свое приложение
- Добавьте 3D-модели в свое приложение