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 à medida que os usuários interagem com seu app ou o sistema. Eles podem até ser alterados pelo próprio app, por exemplo, ao passar para o Espaço Compacto ou o Espaço Ampliado. Para evitar problemas, seu 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 isso para verificar se a interface espacial, o áudio espacial, os ambientes, a passagem ou o conteúdo 3D estão ativados.

Você pode usar LocalSpatialCapabilities.current para verificar se os seguintes recursos espaciais estão disponíveis no momento:

O exemplo a seguir 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, use spatialCapabilities da scene da sessão para consultar quais recursos espaciais estão disponíveis no momento.

Você também pode 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 recursos de hardware variados, 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 adicionando os 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 mesclando os valores de pixel com base no componente alfa.
  • NO_DISPLAY: a mesclagem está indisponível no dispositivo.

Use XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() from the Jetpack XR Runtime library to check what type of blend mode is being used and make adjustments as needed.

Consulte também