XR_EXT_interaction_profile_battery_state_display
رشته نام
XR_EXT_interaction_profile_battery_state_display
نوع افزونه
افزونه نمونه
شماره داخلی ثبتشده
837
بازبینی
1
وضعیت تصویب
تصویبشده
وابستگیهای افزونه و نسخه
تاریخ آخرین تغییر
2025-10-21
وضعیت IP
هیچ ادعای مالکیت فکری شناختهشدهای وجود ندارد.
همیاران
جان کرنی، 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;
توضیحات عضو
typeXrStructureType این ساختار است.-
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 حاوی دادههای معتبر است یا نه. اگر بیت XR_BATTERY_STATE_DISPLAY_STATE_VALID_BIT_EXT در stateFlags تنظیم نشده باشد، برنامه نباید batteryLevel را بخواند.
استفاده معتبر (ضمنی)
- افزونه
XR_EXT_interaction_profile_battery_state_displayباید قبلاز استفاده از XrBatteryStateDisplayEXT فعال شود -
typeبایدXR_TYPE_BATTERY_STATE_DISPLAY_EXTباشد -
nextبایدNULLیا اشارهگر معتبری به ساختار بعدی در زنجیره ساختار باشد -
stateFlagsباید ترکیب معتبری از مقادیر XrBatteryStateDisplayStateFlagBitsEXT باشد -
stateFlagsنباید0باشد
عضو XrBatteryStateDisplayEXT :: stateFlags از نوع زیر است و حاوی یک 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
}
سازههای جدید
درحال گسترش دادن XrInteractionProfileState :
Enums جدید
ماسکهای بیتی جدید
ثابتهای شمارشی جدید
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 برگرداند.
سابقه نسخه
بازبینی ۱، ۲۰۲۵-۱۰-۲۱ (John Kearney)
- پیشنویس اولیه.