Verifica las capacidades espaciales

Dispositivos de realidad extendida correspondientes
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de realidad extendida.
Visores de realidad extendida
Lentes de realidad extendida con cable

Las capacidades espaciales pueden variar entre los dispositivos y cambiar a medida que los usuarios interactúan con tu app o el sistema. Incluso tu app puede cambiarlas, por ejemplo, cuando se mueve 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.

Verifica las capacidades espaciales con Jetpack Compose para realidad extendida

Jetpack Compose para realidad extendida crea un local de composición para verificar las capacidades espaciales. Úsalo para verificar si la IU espacial, el audio espacial, los entornos, el paso directo 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 cree la sesión, usa spatialCapabilities de la 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 visualización del dispositivo

En Android XR, los visores de realidad extendida y los lentes de realidad extendida con cable tienen diferentes capacidades de hardware, en especial en lo que respecta a su tipo de pantalla. Es posible que debas adaptar los colores de la IU de tu app y los objetos renderizados para maximizar la visibilidad, que puede verse afectada por el tipo de pantalla y el modo de combinación preferido que usa 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 contenido virtual al mundo real.

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

  • ADDITIVE: El contenido virtual se agrega al mundo real agregando los valores de píxeles para cada uno de los componentes rojo, verde y azul. Se ignora el alfa y los píxeles negros aparecen transparentes.
  • ALPHA_BLEND: El contenido virtual se agrega al mundo real combinando alfa 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 ajustes según sea necesario.

Consulta también