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:
isSpatialUiEnabled: Indica si la aplicación puede crear elementos de la IU espacial (por ejemplo,SpatialPanel).isContent3dEnabled: Indica si la aplicación puede crear objetos 3D.isAppEnvironmentEnabled: Indica si la aplicación puede configurar el entorno.isPassthroughControlEnabled: Indica si la aplicación puede controlar el estado de paso directo.isSpatialAudioEnabled: Indica si la aplicación puede usar audio espacial.
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.
SPATIAL_3D_CONTENT: La actividad puede crear contenido 3D.APP_ENVIRONMENT: La actividad puede configurar su propio entorno.EMBED_ACTIVITY: La actividad puede incorporar espacialmente otra actividad.PASSTHROUGH_CONTROL: La actividad puede habilitar o inhabilitar el paso directo.SPATIAL_AUDIO: La actividad puede usar audio espacial.SPATIAL_UI: La actividad puede espacializarse (por ejemplo, agregar un panel espacial).
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
- Crea una sesión
- Transición entre HSM y FSM
- Agrega entornos espaciales a tu app
- Agrega modelos 3D a tu app