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หรือ Pointer ไปยังโครงสร้างถัดไปในเชนโครงสร้างstateFlagsอธิบายความถูกต้องของbatteryLevelด้วยมาสก์บิตที่กำหนดไว้ใน XrBatteryStateDisplayStateFlagBitsEXTbatteryLevelคือระดับแบตเตอรี่ (ตั้งแต่ 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
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_EXT_interaction_profile_battery_state_displayก่อน ใช้ XrBatteryStateDisplayEXT -
typeต้อง เป็นXR_TYPE_BATTERY_STATE_DISPLAY_EXT -
nextต้อง เป็นNULLหรือตัวชี้ที่ถูกต้องไปยังโครงสร้างถัดไปในห่วงโซ่โครงสร้าง -
stateFlagsต้อง เป็นการรวมค่า XrBatteryStateDisplayStateFlagBitsEXT ที่ถูกต้อง -
stateFlagsต้อง ไม่เป็น0
สมาชิก 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 ::batteryLevelXR_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_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)
- ฉบับร่างเริ่มต้น