XR_EXT_interaction_profile_battery_state_display

Name String

XR_EXT_interaction_profile_battery_state_display

ประเภทส่วนขยาย

ส่วนขยายอินสแตนซ์

หมายเลขต่อที่ลงทะเบียนไว้

837

การแก้ไข

1

สถานะการให้สัตยาบัน

ให้สัตยาบัน

ทรัพยากร Dependency ของส่วนขยายและเวอร์ชัน

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

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

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