إدارة وحدات التحكّم في التلفزيون

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

يناقش هذا الدليل متطلبات التعامل مع وحدات التحكّم في أجهزة التلفزيون.

الحد الأدنى من عناصر التحكم في لوحة الاتجاهات

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

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

التعامل مع حالات فصل وحدة التحكّم

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

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

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

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

يتيح هذا التغيير في الإعدادات استمرار تشغيل التطبيق من خلال حدث إعادة الاتصال بدلاً من أن يعيد إطار عمل Android تشغيله، ما يؤدي إلى تحسين تجربة المستخدم.

التعامل مع أشكال الإدخال المختلفة باستخدام لوحة التحكّم

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

تعامَل مع الاختلافات في إدخال البيانات عبر لوحة التحكّم الاتجاهية حتى لا يضطر المستخدم إلى تبديل وحدات التحكّم لتشغيل تطبيقك. لمزيد من المعلومات حول التعامل مع الاختلافات في إدخال البيانات، راجِع معالجة إدخال البيانات عبر لوحة التحكّم الاتجاهية.

معالجة أحداث الأزرار

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

أحداث واجهة مستخدم التلفزيون

قم بتعيين سلوك واجهة مستخدم التلفزيون للأزرار التي تولد أنواع KeyEvent كما هو موضح في الجدول التالي:

KeyEventالسلوك
KEYCODE_BUTTON_B، KEYCODE_BACKرجوع
KEYCODE_BUTTON_SELECT، KEYCODE_BUTTON_A، KEYCODE_ENTER، KEYCODE_DPAD_CENTER، KEYCODE_NUMPAD_ENTERخيارات
KEYCODE_DPAD_UP، KEYCODE_DPAD_DOWN، KEYCODE_DPAD_LEFT، KEYCODE_DPAD_RIGHTالتنقل

أحداث الوسائط

عندما يشاهد المستخدم الوسائط، قم بتعيين سلوك للأزرار التي تولد أنواع KeyEvent كما هو موضح في الجدول التالي. إذا كان تطبيقك يتحكّم في MediaSession، استخدِم MediaControllerAdapter لطلب تنفيذ إحدى طرق MediaControllerCompat.TransportControls الموضّحة في الجدول. لاحظ أن أزرار التحديد تعمل كأزرار تشغيل أو إيقاف مؤقت في هذا السياق.

KeyEventاستدعاء عناصر التحكم في النقلالسلوك
BUTTON_SELECT، BUTTON_A، ENTER، DPAD_CENTER، KEYCODE_NUMPAD_ENTER play()تشغيل
BUTTON_START, BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER pause()إيقاف مؤقت
BUTTON_R1skipToNext()التخطي إلى التالي
BUTTON_L1skipToPrevious()التخطي إلى السابق
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER, AXIS_THROTTLEfastForward()تقديم سريع
DPAD_LEFT، BUTTON_L2، AXIS_LTRIGGER، AXIS_BRAKErewind()ترجيع
لا ينطبقstop()إيقاف

ملاحظة: عند استخدام MediaSession، لا تتجاهل معالجة الأزرار الخاصة بالوسائط، مثل KEYCODE_MEDIA_PLAY أو KEYCODE_MEDIA_PAUSE. يُفعّل النظام تلقائيًا طريقة MediaSession.Callback المناسبة.

توفير سلوك مناسب لزر الرجوع

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

بما أنّ زر الرجوع يتيح التنقّل الخطي للخلف فقط، يمكنك استخدامه للخروج من قائمة داخل التطبيق تم فتحها باستخدام زر آخر والرجوع إلى التطبيق. ويجب أن يؤدي الضغط المتكرر على زر الرجوع في النهاية إلى شاشة Android TV الرئيسية. على سبيل المثال: تشغيل لعبة > شاشة إيقاف اللعبة مؤقتًا > شاشة اللعبة الرئيسية > شاشة Android TV الرئيسية أو تشغيل برنامج تلفزيوني > شاشة تطبيق التلفزيون الرئيسية > شاشة Android TV الرئيسية.

لمزيد من المعلومات حول تصميم التنقّل، يُرجى الاطّلاع على تصميم التنقّل للخلف ولأعلى. لمعرفة المزيد عن التنفيذ، يُرجى الرجوع إلى توفير التنقّل السليم للخلف.

التعامل مع وحدات التحكّم في الألعاب

إتاحة عناصر التحكّم في لوحة التحكّم

خطط لنظام التحكم الخاص بك حول لوحة التحكم D-pad، حيث أن مجموعة التحكم هذه هي الإعداد الافتراضي لأجهزة Android TV. يجب أن يتمكّن اللاعب من استخدام لوحة التحكّم في جميع جوانب اللعبة، وليس فقط في التحكّم في طريقة اللعب الأساسية، بل أيضًا في التنقّل بين القوائم والإعلانات. لهذا السبب، احرص على ألا تشير لعبة Android TV إلى واجهة لمس باستخدام عبارات مثل "انقر هنا للمتابعة".

يمكن أن يكون تحديد طريقة تفاعل اللاعب مع وحدة التحكّم عاملاً أساسيًا في تقديم تجربة رائعة للمستخدم. ننصحك باتّباع أفضل الممارسات التالية:

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

استخدام الأزرار المناسبة

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

التعامل مع وحدات تحكّم متعددة

عندما يلعب عدة لاعبين لعبة ما، يستخدم كل منهم وحدة تحكّم خاصة به، لذا من المهم ربط كل لاعب بوحدة التحكّم الخاصة به. للحصول على معلومات حول كيفية تنفيذ تعريف رقم وحدة التحكّم، يُرجى الاطّلاع على getControllerNumber().

التعامل مع حالات فصل وحدة التحكّم

عندما يتم فصل وحدة التحكّم أثناء اللعب، أوقِف اللعبة مؤقتًا واعرض مربّع حوار يطلب من اللاعب الذي تم فصل وحدة التحكّم الخاصة به إعادة ربطها.

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

عرض تعليمات وحدة التحكّم

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

للحصول على عيّنات من صور وحدة تحكّم متوافقة مع Android، نزِّل نموذج لوحة ألعاب Android TV (ملف ZIP). يتضمن وحدة تحكم بيضاء على خلفية سوداء ووحدة تحكم سوداء على خلفية بيضاء - كما هو موضح في الشكل 1 - كملف PNG وكملف Adobe® Illustrator®.

الشكل 1. مثال على تعليمات وحدة التحكّم باستخدام نموذج لوحة ألعاب Android TV