XR_EXT_interaction_profile_battery_state_display

Name String

XR_EXT_interaction_profile_battery_state_display

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

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

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

837

Revision

1

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

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

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

OpenXR 1.0

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

2025-10-21

Статус IP-адреса

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

Авторы

Джон Кирни (John Kearney), Meta
Дэниел Уиллмотт (Daniel Willmott), Valve
Денни Рённгрен (Denny Rönngren), Varjo
Якоб Борнекранц (Jakob Bornecrantz), NVIDIA
Нейтан Нубер (Nathan Nuber), Valve
Лаклан Форд (Lachlan Ford), Google
Нихав Джайн (Nihav Jain), 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 (Джон Кирни)

    • Начальный вариант.