Verificar os recursos espaciais

Dispositivos XR relevantes
Estas orientações ajudam você a criar experiências para esses tipos de dispositivos XR.
Headsets XR
Óculos XR com fio

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:

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.

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