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:
isSpatialUiEnabled: Indica si la aplicación puede crear elementos de la IU espaciales (por ejemplo,SpatialPanel).isContent3dEnabled: Indica si la aplicación puede crear objetos 3D.isAppEnvironmentEnabled: Indica si la aplicación puede establecer el entorno.isPassthroughControlEnabled: Indica si la aplicación puede controlar el estado de transferencia.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 crea la sesión, usa spatialCapabilities desde el scene de la sesión para consultar qué capacidades espaciales están disponibles actualmente.
SPATIAL_3D_CONTENT: La actividad puede crear contenido en 3D.APP_ENVIRONMENT: La actividad puede establecer su propio entorno.EMBED_ACTIVITY: La actividad puede incorporar espacialmente otra actividad.PASSTHROUGH_CONTROL: La actividad puede habilitar o inhabilitar la transferencia.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 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
- Cómo crear una sesión
- Transición entre HSM y FSM
- Agrega entornos espaciales a tu app
- Agrega modelos 3D a tu app