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 ของโครงสร้างนี้
  • next คือ NULL หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้าง
  • 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 มีประเภทต่อไปนี้ และมีการดำเนินการ OR ระดับบิตของบิตตั้งแต่ 0 บิตขึ้นไปที่กำหนดไว้ใน 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
}

โครงสร้างใหม่

Enum ใหม่

มาสก์บิตใหม่

ค่าคงที่ Enum ใหม่

  • 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)

    • ฉบับร่างเริ่มต้น