XR_EXT_interaction_profile_battery_state_display

Name String

XR_EXT_interaction_profile_battery_state_display

Loại phần mở rộng

Phần mở rộng về thực thể

Số máy nhánh đã đăng ký

837

Bản sửa đổi

1

Trạng thái phê chuẩn

Được phê duyệt

Phần mở rộng và các phần phụ thuộc của phiên bản

OpenXR 1.0

Ngày sửa đổi gần đây nhất

2025-10-21

Trạng thái IP

Không có thông báo xác nhận quyền sở hữu nào đã biết về quyền sở hữu trí tuệ.

Cộng tác viên

John Kearney, Meta
Daniel Willmott, Valve
Denny Rönngren, Varjo
Jakob Bornecrantz, NVIDIA
Nathan Nuber, Valve
Lachlan Ford, Google
Nihav Jain, Google

Tổng quan

XR_EXT_interaction_profile_battery_state_display cung cấp một cơ chế để các ứng dụng truy vấn thời gian chạy để biết thông tin về trạng thái pin của các thiết bị được dùng với hồ sơ tương tác. Thông tin về trạng thái pin này chỉ được dùng cho mục đích hiển thị và thời gian chạy phải đảm bảo rằng thông tin này khớp với thông tin được dùng trong giao diện người dùng hệ thống tích hợp.

Trong trường hợp nhiều thiết bị thực cung cấp dữ liệu đầu vào cho các thao tác liên kết với một đường dẫn cấp cao nhất, chẳng hạn như các thời gian chạy thực hiện việc ánh xạ lại để người dùng tuỳ chỉnh hoặc hỗ trợ tiếp cận, thì những thời gian chạy đó nên cố gắng hết sức để trình bày thông tin hữu ích về pin dưới dạng một giá trị duy nhất.

Cụ thể, thông tin này không được hiệu chỉnh giữa các thời gian chạy hoặc thiết bị và không nên dùng để tạo cảnh báo hoặc sửa đổi hành vi của ứng dụng theo cách khác.

Truy vấn trạng thái pin

Cấu trúc XrBatteryStateDisplayEXT được xác định như sau:

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

Nội dung mô tả thành viên

  • typeXrStructureType của cấu trúc này.
  • nextNULL hoặc con trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.
  • stateFlags mô tả tính hợp lệ của batteryLevel bằng các mặt nạ bit được xác định trong XrBatteryStateDisplayStateFlagBitsEXT
  • batteryLevel là mức pin (từ 0,0f đến 1,0f) của thiết bị do thực thể hoặc thao tác được liên kết kết nối.

Để truy vấn mức pin, ứng dụng sẽ xâu chuỗi một cấu trúc XrBatteryStateDisplayEXT vào chuỗi XrInteractionProfileState :: next khi gọi xrGetCurrentInteractionProfile .

Nếu xrGetCurrentInteractionProfile đặt XrInteractionProfileState :: interactionProfile thành XR_NULL_PATH , thì thời gian chạy không được đặt bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT trong stateFlags .

XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT cho biết liệu batteryLevel có chứa dữ liệu hợp lệ hay không. Ứng dụng không được đọc batteryLevel nếu bit XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT không được đặt trong stateFlags .

Sử dụng hợp lệ (Ngầm ẩn)

Thành phần XrBatteryStateDisplayEXT :: stateFlags thuộc loại sau và chứa một thao tác bitwise-OR của 0 hoặc nhiều bit được xác định trong 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;

Các bit cờ có ý nghĩa như sau:

Nội dung mô tả cờ

  • XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT – Cho biết tính hợp lệ của XrBatteryStateDisplayEXT :: batteryLevel
  • XR_BATTERY_STATE_DISPLAY_STATE_CHARGING_BIT_EXT – Cho biết thiết bị được liên kết với hồ sơ tương tác đang sạc.
  • XR_BATTERY_STATE_DISPLAY_STATE_PLUGGED_IN_BIT_EXT – Cho biết thiết bị được liên kết với hồ sơ tương tác đang cắm vào nguồn điện.
  • XR_BATTERY_STATE_DISPLAY_STATE_NO_BATTERY_BIT_EXT – Cho biết thiết bị được liên kết với hồ sơ tương tác không có nguồn điện từ pin.

Ví dụ

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

Cấu trúc mới

Enum mới

Mặt nạ bit mới

Hằng số Enum mới

  • XR_EXT_INTERACTION_PROFILE_BATTERY_STATE_DISPLAY_EXTENSION_NAME
  • XR_EXT_interaction_profile_battery_state_display_SPEC_VERSION
  • Mở rộng XrStructureType :

    • XR_TYPE_BATTERY_STATE_DISPLAY_EXT

Vấn đề

  • Ứng dụng có thể truy vấn mức pin hiển thị cho thiết bị gắn trên đầu bằng tiện ích này không?

    • Đã giải quyết. Không trực tiếp . Tiện ích này chỉ hỗ trợ việc trả về mức pin được hiển thị cho các đường dẫn /user cấp cao nhất bằng hồ sơ tương tác hiện tại. Nếu ứng dụng đề xuất các liên kết cho một hồ sơ tương tác cho thiết bị gắn trên đầu ( /user/head ) và nếu thời gian chạy kích hoạt hồ sơ tương tác đó, thì thời gian chạy có thể trả về mức pin cho đường dẫn /user cấp cao nhất đó.

Danh sách phiên bản

  • Bản sửa đổi 1, ngày 21 tháng 10 năm 2025 (John Kearney)

    • Bản nháp ban đầu.