XR_EXT_interaction_profile_battery_state_display

Nombre de cadena

XR_EXT_interaction_profile_battery_state_display

Tipo de extensión

Extensión de instancia

Número de extensión registrada

837

Revisión

1

Estado de ratificación

Ratificado

Dependencias de extensión y versión

OpenXR 1.0

Fecha de modificación más reciente

2025-10-21

Estado de IP

No se conocen reclamos de IP.

Colaboradores

John Kearney, Meta
Daniel Willmott, Valve
Denny Rönngren, Varjo
Jakob Bornecrantz, NVIDIA
Nathan Nuber, Valve
Lachlan Ford, Google
Nihav Jain, Google

Descripción general

XR_EXT_interaction_profile_battery_state_display proporciona un mecanismo para que las aplicaciones consulten el tiempo de ejecución para obtener información sobre el estado de la batería de los dispositivos que se usan con perfiles de interacción. Esta información sobre el estado de la batería solo se debe usar para fines de visualización, y el tiempo de ejecución debe garantizar que esta información coincida con la que se usa en las interfaces de usuario del sistema integradas.

En los casos en que varios dispositivos físicos proporcionan entrada a las acciones asociadas con una ruta de nivel superior, como los tiempos de ejecución que realizan la reasignación para la personalización o la accesibilidad del usuario, esos tiempos de ejecución deben hacer todo lo posible para presentar información útil sobre la batería en un solo valor.

En particular, no se espera que esta información se calibre entre los tiempos de ejecución o los dispositivos, y no se debe usar para generar advertencias ni modificar el comportamiento de la aplicación.

Cómo consultar el estado de la batería

La estructura XrBatteryStateDisplayEXT se define de la siguiente manera:

typedef struct XrBatteryStateDisplayEXT {
    XrStructureType                       type;
    void*                                 next;
    XrBatteryStateDisplayStateFlagsEXT    stateFlags;
    float                                 batteryLevel;
} XrBatteryStateDisplayEXT;

Descripciones de miembros

  • type es el XrStructureType de esta estructura.
  • next es NULL o un puntero a la siguiente estructura en una cadena de estructura.
  • stateFlags describe la validez de batteryLevel con máscaras de bits definidas en XrBatteryStateDisplayStateFlagBitsEXT.
  • batteryLevel es el nivel de la batería (de 0.0f a 1.0f) del dispositivo conectado por la entidad o acción asociada.

Para consultar el nivel de batería, la aplicación encadena una estructura XrBatteryStateDisplayEXT a la cadena XrInteractionProfileState :: next cuando se llama a xrGetCurrentInteractionProfile .

Si xrGetCurrentInteractionProfile establece XrInteractionProfileState :: interactionProfile en XR_NULL_PATH , el tiempo de ejecución no debe establecer el bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT en stateFlags .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT indica si batteryLevel contiene datos válidos. La aplicación no debe leer batteryLevel si el bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT no está configurado en stateFlags .

Uso válido (implícito)

El miembro XrBatteryStateDisplayEXT :: stateFlags es del siguiente tipo y contiene un OR bit a bit de cero o más de los bits definidos en XrBatteryStateDisplayStateFlagBitsEXT .

typedef XrFlags64 XrBatteryStateDisplayStateFlagsEXT;

// Flag bits for XrBatteryStateDisplayStateFlagsEXT
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT = 0x00000001;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT = 0x00000002;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT = 0x00000004;
static const XrBatteryStateDisplayStateFlagsEXT XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT = 0x00000008;

Los bits de marca tienen los siguientes significados:

Descripciones de marcas

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT: Indica la validez de XrBatteryStateDisplayEXT :: batteryLevel.
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT — Indica que el dispositivo asociado con el perfil de interacción se está cargando.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT — Indica que el dispositivo asociado con el perfil de interacción está conectado a una fuente de alimentación.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT: Indica que el dispositivo asociado con el perfil de interacción no tiene una fuente de alimentación de batería.

Ejemplo

// previously initialized
extern XrSession session;
extern XrPath topLevelUserPath;

XrBatteryStateDisplayEXT batteryStateDisplay{XR_TYPE_BATTERY_STATE_DISPLAY_EXT};
XrInteractionProfileState ipState{XR_TYPE_INTERACTION_PROFILE_STATE, &batteryStateDisplay};
CHK_XR(xrGetCurrentInteractionProfile(session, topLevelUserPath, &ipState));
if ((batteryStateDisplay.stateFlags & XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT) != 0) {
  // use value of batteryStateDisplay.batteryLevel
}

Nuevas estructuras

Nuevos enums

Nuevas máscaras de bits

Nuevas constantes de enum

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Extensión de XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Problemas

  • ¿Puede la aplicación consultar el nivel de batería que se muestra para un dispositivo montado en la cabeza con esta extensión?

    • Resuelto. No directamente . Esta extensión solo admite la devolución del nivel de batería que se muestra para las rutas /user de nivel superior con los perfiles de interacción actuales. Si la aplicación sugiere vinculaciones para un perfil de interacción para el dispositivo montado en la cabeza ( /user/head) y si el tiempo de ejecución activa ese perfil de interacción, el tiempo de ejecución puede devolver el nivel de batería para esa ruta /user de nivel superior.

Historial de versiones

  • Revisión 1, 2025-10-21 (John Kearney)

    • Borrador inicial.