أثناء استخدام نظّارة الصوت أو نظّارة الشاشة، قد ينقطع اتصالها بالجهاز المضيف (مثل هاتف المستخدم)، أو قد تصبح غير متاحة مؤقتًا إذا خلعها المستخدم. ولمراعاة هذه الأنواع من التغييرات في مدى توفّر الجهاز، يمكن لتطبيقك استخدام واجهة برمجة التطبيقات XR Device Availability API التي تجمع إشارات مدى توفّر الجهاز في قيم Lifecycle.State العادية لنظام Android. استخدِم واجهة برمجة التطبيقات هذه للمساعدة في إدارة توجيه الصوت وتفعيل الكلمة الرئيسية، ولمعرفة الوقت المتوقّع لتلقّي بيانات أدخلها المستخدم استنادًا إلى وقت توفّر النظارات.
فهم حالات مراحل النشاط
يوضّح الجدول التالي كيفية ربط إشارات مدى توفّر الجهاز بقيم Lifecycle.State.
حالة مراحل النشاط |
حالة الجهاز |
الوصف |
|---|---|---|
|
تاريخ الإنشاء |
تم إنشاء عنصر مراحل النشاط ولكن لم تتم مراقبته بعد. |
|
غير نشط |
الخدمة متصلة، ولكن المستخدم لا يرتدي الجهاز. |
|
نشط |
المستخدم يرتدي الجهاز. |
|
غير متّصل |
الجهاز غير متّصل أو انقطع اتصال الخدمة. |
التحقّق من مدى توفّر الجهاز ومراقبته
للتحقّق من مدى توفّر الجهاز ومراقبته، عليك استخدام سياق مُسقط مع حالة مراحل النشاط لتحديد كيفية تعامل تطبيقك مع كل حالة:
// In your phone activity or service, check for projected device connection state before // attempting to create a projected device context and get the device lifecycle. ProjectedContext.isProjectedDeviceConnected(context, currentCoroutineContext()) .flatMapLatest { isConnected -> if (isConnected) { try { // Create the projected device context on connection val projectedContext = ProjectedContext.createProjectedDeviceContext(context) val xrDevice = XrDevice.getCurrentDevice(projectedContext) // Get the device lifecycle xrDevice.getLifecycle().currentStateFlow } catch (e: IllegalStateException) { flowOf(Lifecycle.State.DESTROYED) } } else { flowOf(Lifecycle.State.DESTROYED) } } .collect { state -> when (state) { Lifecycle.State.STARTED -> { /* Device is available (worn) */ } Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ } Lifecycle.State.DESTROYED -> { /* Device is disconnected from host phone */ } else -> { /* Handle other states */ } } } }
نقاط أساسية حول الرمز
- التحقّق من وجود اتصال: قبل الوصول إلى مراحل نشاط الجهاز، عليك استدعاء
ProjectedContext.isProjectedDeviceConnectedللتأكّد من أنّ الجهاز المُسقط متّصل بالجهاز المضيف. - الحصول على
ProjectedContext: لا تستدعِProjectedContext.createProjectedDeviceContextإلا بعد التأكّد من الاتصال، وتأكَّد من تمرير هذا السياق إلى مثيلXrDevice. - التعامل مع إبطال السياق: يتم إنشاء
deviceIdجديد في كل مرة يتصل فيها جهاز مُسقط. بمجرد أن تصل الحالة إلىDESTROYED، يصبحProjectedContextالحالي غير صالح. توقَّف عن استخدامه على الفور وانتظر اتصالاً جديدًا. - تحسين البطارية والموارد: تعامَل بشكل سليم مع وظائف التطبيق
استنادًا إلى حالة مراحل النشاط للحفاظ على موارد النظام وتقليل استهلاك البطارية. على سبيل المثال، عليك إيقاف استخدام الموارد الخاصة بالنظارات، مثل ساحة مشاركات بيانات الكاميرا، عندما تنتقل الحالة من
STARTEDإلىCREATED. تشير الحالةCREATEDإلى أنّ الجهاز لم يعُد قيد الاستخدام، لذا فإنّ إيقاف هذه العمليات ضروري لمنع استنزاف البطارية بلا داعٍ وتعزيز خصوصية المستخدم.