Os recursos espaciais podem mudar à medida que os usuários interagem com seu app ou com o sistema, ou até mesmo ser alterados pelo próprio app, por exemplo, ao mudar para o Espaço compacto ou o Espaço completo. Para evitar problemas, o app precisa verificar os recursos espaciais para determinar quais APIs são compatíveis com o ambiente atual.
Verificar recursos espaciais usando o Jetpack Compose para XR
O Jetpack Compose para XR cria um local de composição para verificar os recursos espaciais. Use essa opção para verificar se a interface espacial, o áudio espacial, os ambientes, o encaminhamento ou o conteúdo 3D estão ativados.
Use LocalSpatialCapabilities.current
para verificar se
os seguintes recursos espaciais estão disponíveis:
isSpatialUiEnabled
: indica se o aplicativo pode criar elementos de interface espacial (por exemplo,SpatialPanel
).isContent3dEnabled
: indica se o aplicativo pode criar objetos 3D.isAppEnvironmentEnabled
: indica se o aplicativo pode definir o ambiente.isPassthroughControlEnabled
: indica se o aplicativo pode controlar o estado de passagem.isSpatialAudioEnabled
: indica se o aplicativo pode usar áudio espacial.
O exemplo abaixo mostra como verificar se a interface espacial está ativada:
if (LocalSpatialCapabilities.current.isSpatialUiEnabled) { Subspace { SpatialPanel( modifier = SubspaceModifier .width(1488.dp) .fillMaxHeight() ) { AppContent() } } } else { AppContent() }
Verificar recursos espaciais usando o SceneCore
Ao usar a biblioteca SceneCore, você precisa criar uma
sessão. Depois que a sessão for criada, chame
spatialCapabilities
na sessão para consultar quais recursos espaciais
estão disponíveis no momento.
SPATIAL_CAPABILITY_3D_CONTENT
: a atividade pode criar conteúdos em 3D.SPATIAL_CAPABILITY_APP_ENVIRONMENT
: a atividade pode definir o próprio ambiente.SPATIAL_CAPABILITY_EMBED_ACTIVITY
: a atividade pode incorporar espacialmente outra atividade.SPATIAL_CAPABILITY_PASSTHROUGH_CONTROL
: a atividade pode ativar ou desativar o encaminhamento.SPATIAL_CAPABILITY_SPATIAL_AUDIO
: a atividade pode usar áudio espacial.SPATIAL_CAPABILITY_UI
: a atividade pode se espacializar, por exemplo, adicionando um painel espacial.
Também é possível se inscrever em um callback, addSpatialCapabilitiesChangedListener
, que notifica você quando os recursos
espaciais mudam.
// 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 ) ) { // ... }
Veja também
- Criar uma sessão
- Transição entre HSM e FSM
- Adicionar ambientes espaciais ao app
- Adicionar modelos 3D ao app