XR_EXT_interaction_profile_battery_state_display

名称字符串

XR_EXT_interaction_profile_battery_state_display

扩展程序类型

实例扩展程序

已注册的扩展程序编号

837

修订版本

1

批准状态

已批准

扩展程序和版本依赖项

OpenXR 1.0

上次修改日期

2025-10-21

IP 状态

没有已知的 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
  • nextNULL 或指向结构链中下一个结构的指针。
  • stateFlags 使用 XrBatteryStateDisplayStateFlagBitsEXT 中定义的位掩码描述 batteryLevel 的有效性
  • batteryLevel 是由关联的实体或操作连接的设备的电池电量(从 0.0f 到 1.0f)。

如需查询电池电量,应用在调用 xrGetCurrentInteractionProfile 时,会将 XrBatteryStateDisplayEXT 结构链接到 XrInteractionProfileState :: next 链。

如果 xrGetCurrentInteractionProfileXrInteractionProfileState :: interactionProfile 设置为 XR_NULL_PATH,则运行时 不得stateFlags 中设置 XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT 位。

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT 表示 batteryLevel 是否包含有效数据。如果 stateFlags 中未设置 XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT 位,则应用不得 读取 batteryLevel

有效用法(隐式)

XrBatteryStateDisplayEXT :: stateFlags 成员的类型如下,并且包含 XrBatteryStateDisplayStateFlagBitsEXT 中定义的零个或多个位的按位 OR 运算。

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,2025 年 10 月 21 日(John Kearney)

    • 初始草稿。