فهم كيفية توجيه الإدخال المادي للنظارات الصوتية

أجهزة XR المشمولة
تساعدك هذه الإرشادات في إنشاء تجارب لهذه الأنواع من أجهزة XR.
نظارات صوتية

في النظارات الصوتية، يوجّه النظام الإدخال الفعلي (مثل الإيماءات على لوحة اللمس أو الضغط على الأزرار) استنادًا إلى وعي المستخدم بدلاً من التركيز على العرض المرئي. بما أنّ المستخدمين لا يمكنهم رؤية واجهة مستخدم، يوجّه النظام الإدخال المادي إلى النشاط المعروض لأي تجربة تطبيق يستشعرها المستخدم أو يتفاعل معها بشكل نشط.

كيفية تحديد النظام لوعي المستخدم

يحدّد النظام وعي المستخدم من خلال مراقبة مصادر البيانات النشطة التالية:

  • مصادر إخراج الصوت: القراءات الصوتية أو الإشارات الصوتية أو تشغيل الوسائط
  • تسجيلات الميكروفون: الطلبات الصوتية أو التسجيلات الصوتية المستمرة من محيط المستخدم
  • بث التقاط الكاميرا: بث الفيديو أو الصور

بعض مصادر البيانات تكون مؤقتة وتجذب انتباه المستخدم لفترة قصيرة فقط. على سبيل المثال، قراءة صوتية للمنعطف التالي الذي يجب أن يسلكه المستخدم أثناء التنقل في مسار. أما مصادر البيانات الأخرى، فهي غير محدّدة وتحافظ على وعي المستخدم طالما أنّها مستمرة. على سبيل المثال، تشغيل الوسائط باستخدام قائمة تشغيل عشوائية لا تنتهي. عندما يقاطع مصدر بيانات عابر مصدر بيانات غير محدّد، يحصل على انتباه المستخدم مؤقتًا.

التزامن والتركيز على الإدخال

غالبًا ما يشغّل المستخدمون تجارب تطبيقات متعدّدة في الوقت نفسه على النظارات الصوتية. على سبيل المثال، قد يستمع المستخدم إلى الموسيقى أثناء اتّباع الاتجاهات المفصّلة. في هذه الحالات، يحدّد النظام حالة التزامن وينقل التركيز على الإدخال ليتطابق مع التركيز على الصوت من خلال تنفيذ ما يلي:

  • استئناف النشاط المتوقّع لتطبيقك أو إيقافه
  • جارٍ توجيه الإدخال الفعلي إلى النشاط المعروض في المقدّمة.

يساعد هذا النهج في الحفاظ على تجربة مستخدم متّسقة.

السماح للنظام بإعادة تشغيل نشاطك المتوقّع

عندما يكتسب تطبيقك وعيًا بالمستخدم، خاصةً إذا كان نشاطه المتوقّع في الخلفية، يجب أن يتمكّن النظام من استئناف النشاط وتوجيه الإدخال المادي إليه.

لضمان إمكانية إعادة تشغيل نشاطك من قِبل النظام:

  1. إنشاء intent مؤجّلة: أنشِئ Intent صريحة تشير إلى النشاط المستهدَف المتوقّع. يجب تضمين الغرض في PendingIntent وضبط FLAG_UPDATE_CURRENT أو FLAG_IMMUTABLE للحفاظ على سلوك تشغيل آمن ومتوقَّع:

    // Build an explicit Intent pointing to this projected activity and wrap it in a
    // PendingIntent so the system can relaunch it and route physical input to it.
    private val pendingIntent: PendingIntent by lazy {
        val intent = Intent(this, ProjectedInputFocusActivity::class.java)
    
        PendingIntent.getActivity(
            this,
            0,
            intent,
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
        )
    }

  2. تسجيل جهاز استقبال الإدخال: يمكنك الحصول على مثيل من ProjectedActivityCompat وتسجيل PendingIntent كجهاز استقبال الإدخال المحدّد من خلال تمريره إلى setActivityAsInputReceiver.

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        lifecycleScope.launch {
            // Create or obtain the ProjectedActivityCompat instance
            val projectedActivity = ProjectedActivityCompat.create(this@ProjectedInputFocusActivity)
    
            // Register the PendingIntent as the designated input receiver
            projectedActivity.setActivityAsInputReceiver(pendingIntent)
        }

  3. محو مستقبِل الإدخال عند التنظيف: عند تدمير نشاطك أو عدم الحاجة إلى تلقّي إدخال مادي، امحُ مستقبِل الإدخال لمنع إرسال PendingIntent قديم وتجنُّب تسرُّب الذاكرة.

    override fun onDestroy() {
        super.onDestroy()
        lifecycleScope.launch {
            val projectedActivity = ProjectedActivityCompat.create(this@ProjectedInputFocusActivity)
            projectedActivity.clearActivityAsInputReceiver()
        }
    }

فهم كيفية انتقال التركيز على الإدخال عبر حالات التزامن

لتحديد التطبيق الذي يتلقّى تركيز الإدخال، يقيّم النظام مصادر البيانات النشطة ويوجّه الإدخال استنادًا إلى حالات التزامن التالية:

حالة التزامن السياق البيئي سلوك النظام والتركيز على الإدخال مثال

غير متزامنة

هناك نشاط مستقل معروض على الشاشة، ولا يتم تشغيل أي جلسة وسائط في الخلفية.

يتم توجيه التركيز على الإدخال بالكامل إلى نشاطك المتوقّع، حتى أثناء فترات الصمت بين القراءات.

يستخدم أحد الأشخاص تطبيقًا لتتبُّع التمارين الرياضية، وحتى في لحظات الصمت، يتم توجيه إدخالات لوحة اللمس مباشرةً إلى تطبيق اللياقة البدنية.

شبه متزامن

يكون نشاط العرض نشطًا، ولكن تتوفّر جلسة وسائط في الخلفية في حالة متوقفة مؤقتًا.

يتم تلقائيًا التركيز على أدوات التحكّم في الوسائط التي تم إيقافها مؤقتًا خلال فترات الصمت بين القراءات النشطة للتطبيق.

يشغّل مستخدم تطبيقًا لتتبُّع التمارين الرياضية أثناء إيقاف الموسيقى مؤقتًا. بين تحديثات مدرّب اللياقة البدنية، يؤدي النقر على لوحة اللمس إلى استئناف الموسيقى بدلاً من تفعيل وظيفة التمرين.

Concurrent

التشغيل المزدوج نشط (على سبيل المثال، يؤدي الإشعار الصوتي في تطبيقك إلى مقاطعة الموسيقى في الخلفية أو خفض مستوى صوتها).

التركيز على الصوت يساوي التركيز على الإدخال.

يتم توجيه التركيز على الإدخال إلى نشاطك المعروض أثناء القراءات النشطة، ويعود إلى أدوات التحكّم في الوسائط عند انتهاء البث الصوتي.

يستمع المستخدم إلى الموسيقى عندما يشغّل تطبيق التنقّل قراءة التعليمات. أثناء القراءة، يحصل تطبيق التنقّل على التركيز على الإدخال. بعد انتهاء القراءة، ينتقل التركيز مرة أخرى إلى أدوات التحكّم في الوسائط.

إجراءات وقاية متعلّقة بتوقيت النظام

يوفّر النظام إجراءات الوقاية التالية للمساعدة في منع الإدخال غير المقصود أو السلوكيات غير المتوقعة للمستخدمين:

  • فترات السماح للأنشطة المعروضة التي تم إطلاقها حديثًا: لاستيعاب تحميل مواد العرض عند التشغيل على البارد أو تأخيرات الشبكة، تحصل الأنشطة المعروضة التي تم إطلاقها حديثًا على فترة سماح قصيرة لإنشاء مصدر بيانات وجذب انتباه المستخدم قبل أن يوقف النظام النشاط المعروض وينقله إلى الخلفية.
  • يتم توجيه التركيز استنادًا إلى وعي المستخدم: إذا تغيّر وعي المستخدم من مصدر بيانات جديد ونشط، مثل قراءة صوتية، يستأنف النظام على الفور نشاطك المعروض ويوجه تركيز الإدخال إليه.
  • مخازن الانتقال المؤقتة أثناء تشغيل الوسائط: عند اكتمال قراءة عابرة أثناء تشغيل الوسائط في الخلفية، يظل التركيز على الإدخال مع النشاط المعروض مؤقتًا. تساعد فترة التخزين المؤقت في منع المدخلات غير المقصودة، مثل محاولة المستخدم كتم صوت القراءة ولكن تخطي مقطع موسيقي بدلاً من ذلك. بعد انتهاء فترة الانتقال المؤقتة، يوقف النظام النشاط المتوقّع للتطبيق ويعيد توجيه التركيز على الإدخال إلى أدوات التحكّم في الوسائط.
  • إيقاف الأنشطة المعروضة غير النشطة مؤقتًا أو نهائيًا: يوقف النظام أي أنشطة معروضة غير نشطة لا تتضمّن مصادر بيانات نشطة بعد بضع دقائق (أو مؤقتًا لمخرجات الوسائط الجارية عند إيقافها مؤقتًا).

انتقالات التركيز على الإدخال في الممارسة العملية

لفهم كيفية انتقال التركيز على الإدخال عبر حالات التزامن، يمكنك الاطّلاع على الأمثلة التالية لسيناريوهات تطبيق تنقّل يقدّم إرشادات اتّجاهات مفصّلة:

السيناريو (أ): غير متزامن (وسائط غير نشطة)

في هذا السيناريو، يوجّه النظام الإدخال إلى تطبيق التنقّل الذي يدرك المستخدم أثناء الرحلة بأكملها.

الشكل 1 كيفية توجيه التركيز على الإدخال لتطبيق تنقّل في هذا السيناريو غير المتزامن
  1. يبدأ المستخدم التنقّل بدون تشغيل موسيقى في الخلفية.
  2. يطلق تطبيق التنقّل نشاطه المعروض على النظارات الصوتية.
  3. بما أنّه ما مِن جلسة وسائط نشطة، يحافظ تطبيق التنقّل على تركيز الإدخال على لوحة اللمس طوال الرحلة.
  4. إجراءات المستخدم: قد يؤدي النقر أثناء قراءة نشطة إلى كتم صوت الإرشادات. قد يؤدي النقر أثناء الصمت إلى تكرار التعليمات الأخيرة.

السيناريو (ب): شبه متزامن (وسائط متوقفة مؤقتًا)

في هذا السيناريو، يوجّه النظام الإدخال إلى أدوات التحكّم في الوسائط في النظام عندما لا يكون تطبيق التنقّل على دراية بالمستخدم.

الشكل 2 كيفية توجيه التركيز على الإدخال لتطبيق تنقّل في هذا السيناريو شبه المتزامن
  1. يبدأ المستخدم التنقّل أثناء إيقاف الموسيقى في الخلفية مؤقتًا.
  2. أثناء فترات الصمت بين القراءات، يتم تلقائيًا التركيز على أدوات التحكّم في الوسائط.
  3. عندما يقول تطبيق التنقّل "بعد 500 قدم، انعطِف يسارًا"، يكتسب التطبيق تركيز الإدخال.
  4. إجراءات المستخدم: قد يؤدي النقر أثناء القراءة إلى كتم صوت الإرشادات. يؤدي النقر على أثناء الصمت إلى استئناف تشغيل الموسيقى.

السيناريو ج: متزامن (وسائط نشطة)

في هذا السيناريو، يوجّه النظام الإدخال إلى أدوات التحكّم في الوسائط في النظام عندما لا يكون تطبيق التنقّل على دراية بالمستخدم، ويتم خفض مستوى الصوت من تشغيل الوسائط النشطة أثناء كل قراءة من تطبيق التنقّل.

الشكل 3 كيفية توجيه التركيز على الإدخال لتطبيق تنقّل في هذا السيناريو المتزامن
  1. يبدأ المستخدم التنقّل أثناء تشغيل الموسيقى بشكل نشط.
  2. أثناء قراءة التعليمات، يخفض النظام مستوى الصوت في الخلفية وينقل التركيز على الإدخال إلى تطبيق التنقّل.
  3. إجراءات المستخدم: قد يؤدي النقر أثناء القراءة إلى كتم صوت الإرشادات. يؤدي النقر على أثناء فترات الصمت إلى التحكّم في تشغيل الوسائط (لإيقافها مؤقتًا أو استئنافها).