XR_EXT_interaction_profile_battery_state_display

Name String

XR_EXT_interaction_profile_battery_state_display

نوع الإضافة

إضافة مثيل

رقم الإضافة المسجَّل

837

المراجعة

1

حالة التصديق

تمت المصادقة عليه

الاعتماد على الإضافات والإصدارات

OpenXR 1.0

تاريخ آخر تعديل

2025-10-21

حالة الملكية الفكرية

ما مِن مطالبات معروفة بشأن الملكية الفكرية.

المساهمون

جون كيرني، Meta
دانيال ويلموت، Valve
ديني رونغرين، Varjo
جاكوب بورنيكرانتز، NVIDIA
ناثان نوبر، Valve
لاكلان فورد، Google
نيهاف جاين، 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 .

الاستخدام الصالح (ضمني)

العضو stateFlags في XrBatteryStateDisplayEXT هو من النوع التالي، ويحتوي على عامل تشغيل bitwise-OR لصفر أو أكثر من وحدات البت المحدّدة في 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
}

منشآت جديدة

عمليات تعداد جديدة

أقنعة بت جديدة

ثوابت تعداد جديدة

  • 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 (جون كيرني)

    • مسودة أولية