Пространственные возможности могут различаться на разных устройствах и меняться по мере того, как пользователи взаимодействуют с вашим приложением или системой. Их может изменить даже само приложение, например при переходе в главное или полное пространство. Чтобы избежать проблем, приложению необходимо проверять пространственные возможности, чтобы определить, какие API поддерживаются в текущей среде.
Как проверить пространственные возможности с помощью Jetpack Compose для XR
Jetpack Compose для XR создает локальную композицию для проверки пространственных возможностей. Используйте этот параметр, чтобы проверить, включены ли пространственный интерфейс, пространственное звучание, окружения, сквозная передача или 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 из scene сеанса, чтобы узнать, какие пространственные возможности доступны в данный момент.
SPATIAL_3D_CONTENT: деятельность может быть связана с созданием 3D-контента.APP_ENVIRONMENT. Действие может задавать собственную среду.EMBED_ACTIVITY: действие может быть пространственно вложено в другое действие.PASSTHROUGH_CONTROL: действие может включить или отключить сквозную передачу.SPATIAL_AUDIO. Для этого действия можно использовать пространственное аудио.SPATIAL_UI– действие может быть пространственным (например, добавить пространственную панель).
Вы также можете подписаться на обратный вызов 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, шлемы и проводные очки расширенной реальности имеют разные аппаратные возможности, особенно в отношении типа дисплея. Возможно, вам потребуется адаптировать цвета интерфейса приложения и отрисованных объектов, чтобы обеспечить максимальную видимость. На нее могут влиять тип дисплея и режим наложения, используемый устройством. API DisplayBlendMode предоставляет возможность использовать режим наложения устройства для отрисовки. Этот API позволяет определить, как виртуальный контент добавляется в реальный мир.
Ниже перечислены некоторые типы режимов наложения.
ADDITIVE: виртуальный контент добавляется в реальный мир путем добавления значений пикселей для каждого из красного, зеленого и синего компонентов. Альфа-канал игнорируется, а черные пиксели становятся прозрачными.ALPHA_BLEND: виртуальный контент добавляется в реальный мир путем альфа-смешивания значений пикселей на основе альфа-компонента.NO_DISPLAY: смешивание не поддерживается на устройстве.
Используйте XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() из библиотеки Jetpack XR Runtime, чтобы проверить, какой режим наложения используется, и при необходимости внести изменения.
Дополнительная информация
- Как создать сеанс
- Переход с HSM на FSM
- Как добавить в приложение пространственные среды
- Как добавить 3D-модели в приложение