XR_EXT_interaction_profile_battery_state_display

Строка имени

XR_EXT_interaction_profile_battery_state_display

Тип расширения

Расширение экземпляра

Зарегистрированный добавочный номер

837

Пересмотр

1

Статус ратификации

Ратифицирован

Зависимости расширений и версий

OpenXR 1.0

Дата последнего изменения

2025-10-21

Статус IP

Известных претензий на интеллектуальную собственность нет.

Авторы

Джон Керни, Мета
Дэниел Уиллмотт, Valve
Денни Рённгрен, Варйо
Якоб Борнекранц, NVIDIA
Натан Нубер, Valve
Лахлан Форд, Google
Нихав Джайн, Google

Обзор

XR_EXT_interaction_profile_battery_state_display предоставляет приложениям механизм для запроса к среде выполнения информации о состоянии батареи устройств, используемых с профилями взаимодействия. Эта информация о состоянии батареи должна использоваться только для отображения, и среда выполнения должна гарантировать, что эта информация соответствует той, что используется во встроенных пользовательских интерфейсах системы.

В случаях, когда несколько физических устройств предоставляют входные данные для действий, связанных с путем верхнего уровня, например, среды выполнения, выполняющие переназначение для пользовательской настройки или обеспечения доступности, эти среды выполнения должны прилагать все усилия для представления полезной информации о заряде батареи в одном значении.

В частности, не предполагается, что эта информация будет калиброваться между различными средами выполнения или устройствами, и её не следует использовать для генерации предупреждений или иного изменения поведения приложения.

Запрос состояния батареи.

Структура XrBatteryStateDisplayEXT определяется следующим образом:

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

Описание участников

  • type — это XrStructureType данной структуры.
  • next — это NULL или указатель на следующую структуру в цепочке структур.
  • stateFlags описывает допустимость значения batteryLevel с помощью битовых масок, определенных в XrBatteryStateDisplayStateFlagBitsEXT.
  • batteryLevel — это уровень заряда батареи (от 0,0f до 1,0f) устройства, подключенного к соответствующей сущности или действию.

Для запроса уровня заряда батареи приложение связывает структуру XrBatteryStateDisplayEXT с цепочкой XrInteractionProfileState :: next при вызове функции xrGetCurrentInteractionProfile .

Если xrGetCurrentInteractionProfile устанавливает XrInteractionProfileState :: interactionProfile в значение XR_NULL_PATH , то среда выполнения не должна устанавливать бит XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT в stateFlags .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT указывает, содержит ли batteryLevel допустимые данные. Приложение не должно считывать batteryLevel если бит XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT не установлен в stateFlags .

Допустимое использование (неявное)

Член XrBatteryStateDisplayEXT :: stateFlags имеет следующий тип и содержит побитовое ИЛИ нуля или более битов, определенных в 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;

Биты флага имеют следующее значение:

Описание флагов

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT — Указывает на корректность XrBatteryStateDisplayEXT :: batteryLevel
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT — Указывает, что устройство, связанное с профилем взаимодействия, находится в процессе зарядки.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT — Указывает, что устройство, связанное с профилем взаимодействия, подключено к источнику питания.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT — Указывает, что устройство, связанное с профилем взаимодействия, не имеет источника питания от батареи.

Пример

// 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
}

Новые сооружения

Новые перечисления

Новые битовые маски

Новые константы перечислений

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Расширение XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Проблемы

  • Может ли приложение запрашивать отображаемый уровень заряда батареи на головном устройстве с помощью этого расширения?

    • Решено. Не напрямую . Это расширение поддерживает отображение уровня заряда батареи только для путей верхнего уровня /user с текущими профилями взаимодействия. Если приложение предлагает привязки для профиля взаимодействия для устройства, закрепленного на голове ( /user/head ), и если среда выполнения активирует этот профиль взаимодействия, то среда выполнения может возвращать уровень заряда батареи для этого пути верхнего уровня /user .

История версий

  • Редакция 1, 21.10.2025 (Джон Керни)

    • Первоначальный вариант.