Verificar os recursos espaciais

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:

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.

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