Verifica las capacidades espaciales

Dispositivos XR aplicables
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de XR.
Auriculares XR
Lentes de RE con cable

Las capacidades espaciales pueden variar según los dispositivos y cambiar a medida que los usuarios interactúan con tu app o el sistema. Incluso tu propia app puede cambiarlos, por ejemplo, cuando se pasa al espacio principal o al espacio completo. Para evitar problemas, tu app debe verificar las capacidades espaciales para determinar qué APIs se admiten en el entorno actual.

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

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

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

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

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

Verifica 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, usa spatialCapabilities desde el scene de 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.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)
) {
    // ...
}

Usa el modo de combinación para verificar las capacidades de la pantalla del dispositivo

En Android XR, los visores y los lentes con cable para XR tienen diferentes capacidades de hardware, en especial en lo que respecta al tipo de pantalla. Es posible que debas adaptar los colores de la IU de tu app y los objetos renderizados para maximizar la visibilidad, lo que podría verse afectado por el tipo de pantalla y el modo de combinación preferido que emplea el dispositivo. La API de DisplayBlendMode proporciona la capacidad del modo de combinación del dispositivo para la renderización. Usa esta API para determinar cómo se agrega el contenido virtual al mundo real.

Estos son algunos de los tipos de modos de fusión que debes conocer:

  • ADDITIVE: El contenido virtual se agrega al mundo real sumando los valores de píxeles de cada componente rojo, verde y azul. Se ignora el canal alfa y los píxeles negros aparecen transparentes.
  • ALPHA_BLEND: El contenido virtual se agrega al mundo real combinando los valores de píxeles según el componente alfa.
  • NO_DISPLAY: La combinación no es compatible con el dispositivo.

Usa XrDevice.getCurrentDevice(session).getPreferredDisplayBlendMode() de la biblioteca de Jetpack XR Runtime para verificar qué tipo de modo de combinación se está usando y realizar los ajustes necesarios.

Consulta también