Os recursos espaciais podem variar entre dispositivos e mudar conforme os usuários interagem com seu app ou com o sistema. Elas podem até ser alteradas pelo próprio app, por exemplo, ao entrar no Espaço Compacto ou no Espaço Ampliado. 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 uma composição local para verificar os recursos espaciais. Use isso para verificar se a interface espacial, o áudio espacial, os ambientes, o passthrough ou o conteúdo 3D estão ativados.
Use LocalSpatialCapabilities.current para verificar se os seguintes
recursos espaciais estão disponíveis no momento:
isSpatialUiEnabled: indica se o aplicativo pode criar elementos da interface (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 a seguir mostra como verificar se a IU 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, use spatialCapabilities do
scene da sessão para consultar quais recursos espaciais estão disponíveis no momento.
SPATIAL_3D_CONTENT: a atividade pode criar conteúdo em 3D.APP_ENVIRONMENT: a atividade pode definir o próprio ambiente.EMBED_ACTIVITY: a atividade pode incorporar outra atividade espacialmente.PASSTHROUGH_CONTROL: a atividade pode ativar ou desativar a passagem.SPATIAL_AUDIO: a atividade pode usar áudio espacial.SPATIAL_UI: a atividade pode se espacializar (por exemplo, adicionando um painel espacial).
Também é possível se inscrever em um callback,
addSpatialCapabilitiesChangedListener, que notifica quando os recursos
espaciais mudam.
// 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) ) { // ... }
Usar o modo de mesclagem para verificar os recursos de exibição do dispositivo
No Android XR, os headsets XR e os óculos XR com fio têm diferentes recursos de hardware, especialmente em relação ao tipo de tela. Talvez seja necessário adaptar
as cores da interface do app e dos objetos renderizados para maximizar a visibilidade, que
pode ser influenciada pelo tipo de tela e pelo modo de mesclagem preferido usado pelo
dispositivo. A API DisplayBlendMode fornece o recurso de modo de mesclagem
do dispositivo para renderização. Use essa API para determinar como o conteúdo virtual é adicionado
ao mundo real.
Confira alguns tipos de modo de mesclagem:
ADDITIVE: o conteúdo virtual é adicionado ao mundo real com a adição dos valores de pixel para cada um dos componentes vermelho, verde e azul. O alfa é ignorado, e os pixels pretos aparecem transparentes.ALPHA_BLEND: o conteúdo virtual é adicionado ao mundo real por meio da combinação Alfa dos valores de pixel com base no componente Alfa.NO_DISPLAY: a combinação não é compatível com o dispositivo.
Use XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() da
biblioteca de ambiente de execução do Jetpack XR para verificar qual tipo de modo de mesclagem está sendo usado
e fazer os ajustes necessários.
Consulte também
- Criar uma sessão
- Transição entre HSM e FSM
- Adicionar ambientes espaciais ao app
- Adicionar modelos 3D ao app