Verifica las capacidades espaciales

Las capacidades espaciales pueden cambiar a medida que los usuarios interactúan con tu app o el sistema, o incluso la app puede cambiarlas, por ejemplo, cuando se pasa al modo de espacio principal o al modo de espacio completo. Para evitar problemas, tu app debe verificar las capacidades espaciales para determinar qué APIs son compatibles con el entorno actual.

Cómo verificar las capacidades espaciales con Jetpack Compose para XR

Jetpack Compose para XR crea un elemento Composition Local para verificar las capacidades espaciales. Úsalo para verificar si están habilitados la IU espacial, el audio espacial, los entornos, la transferencia o el contenido 3D.

Puedes usar LocalSpatialCapabilities.current para verificar si las siguientes funciones espaciales están disponibles actualmente:

En el siguiente ejemplo, se muestra cómo comprobar si la IU espacial está habilitada:

if (LocalSpatialCapabilities.current.isSpatialUiEnabled) {
    Subspace {
        SpatialPanel(
            modifier = SubspaceModifier
                .width(1488.dp)
                .fillMaxHeight()
        ) {
            AppContent()
        }
    }
} else {
    AppContent()
}

Cómo verificar las capacidades espaciales con SceneCore

Cuando uses la biblioteca de SceneCore, deberás crear una sesión. Una vez que se crea la sesión, llama a spatialCapabilities en la sesión para consultar qué capacidades espaciales están disponibles actualmente.

También puedes suscribirte a una devolución de llamada, addSpatialCapabilitiesChangedListener, que te notifica cuando cambian las capacidades espaciales.

// 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
    )
) {
    // ...
}

Consulta también