أثناء استخدام نظارات الذكاء الاصطناعي، قد ينقطع الاتصال بينها وبين الجهاز المضيف (مثل هاتف المستخدم)، أو قد تصبح النظارات غير متاحة مؤقتًا إذا خلعها المستخدم. ولمراعاة هذه الأنواع من التغييرات في مدى توفّر الجهاز، يمكن لتطبيقك استخدام واجهة برمجة التطبيقات 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إلى أنّ الجهاز لم يعُد موضوعًا على المعصم، لذا من الضروري إيقاف هذه العمليات لمنع استنزاف البطارية بلا داعٍ وتعزيز خصوصية المستخدم.