XR_EXT_interaction_profile_battery_state_display
Строка имени
XR_EXT_interaction_profile_battery_state_display
Тип расширения
Расширение экземпляра
Зарегистрированный добавочный номер
837
Пересмотр
1
Статус ратификации
Ратифицирован
Зависимости расширений и версий
Дата последнего изменения
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 .
Допустимое использование (неявное)
- Расширение
XR_EXT_interaction_profile_battery_state_displayнеобходимо включить перед использованием XrBatteryStateDisplayEXT. -
typeдолжен бытьXR_TYPE_BATTERY_STATE_DISPLAY_EXT -
nextдолжно бытьNULLили допустимым указателем на следующую структуру в цепочке структур. -
stateFlagsдолжен представлять собой допустимую комбинацию значений XrBatteryStateDisplayStateFlagBitsEXT. -
stateFlagsне должно быть0
Член 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
}
Новые сооружения
Расширение XrInteractionProfileState :
Новые перечисления
Новые битовые маски
Новые константы перечислений
-
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 (Джон Керни)
- Первоначальный вариант.