XR_EXT_interaction_profile_battery_state_display
名称字符串
XR_EXT_interaction_profile_battery_state_display
扩展程序类型
实例扩展程序
已注册的扩展程序编号
837
修订版本
1
批准状态
已批准
扩展程序和版本依赖项
上次修改日期
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。next是NULL或指向结构链中下一个结构的指针。stateFlags使用 XrBatteryStateDisplayStateFlagBitsEXT 中定义的位掩码描述batteryLevel的有效性batteryLevel是由关联的实体或操作连接的设备的电池电量(从 0.0f 到 1.0f)。
如需查询电池电量,应用在调用 xrGetCurrentInteractionProfile 时,会将 XrBatteryStateDisplayEXT 结构链接到 XrInteractionProfileState :: next 链。
如果 xrGetCurrentInteractionProfile 将 XrInteractionProfileState :: 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。
有效用法(隐式)
- 必须先启用
XR_EXT_interaction_profile_battery_state_display扩展程序,然后才能使用 XrBatteryStateDisplayEXT -
type必须 为XR_TYPE_BATTERY_STATE_DISPLAY_EXT -
next必须 为NULL或指向结构链中下一个结构的有效指针 -
stateFlags必须 是 XrBatteryStateDisplayStateFlagBitsEXT 值的有效组合 -
stateFlags不得 为0
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_NAMEXR_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)
- 初始草稿。