تتطلّب أجهزة التلفزيون جهازًا ثانويًا للتفاعل مع التطبيقات، وهو وحدة تحكُّم أساسية عن بُعد أو ذراع تحكُّم في الألعاب. لذلك، يجب أن يتيح تطبيقك إدخال لوحة الاتجاهات (D-pad). قد يحتاج تطبيقك أيضًا إلى التعامل مع وحدات التحكّم غير المتصلة بالإنترنت والإدخال من أكثر من نوع واحد من وحدات التحكّم.
يناقش هذا الدليل متطلبات التعامل مع وحدات التحكّم في أجهزة التلفزيون.
الحدّ الأدنى لعناصر التحكّم على لوحة التحكّم
وحدة التحكّم التلقائية لجهاز التلفزيون هي لوحة التحكّم. بشكل عام، يجب أن يكون تطبيقك قابلاً للتشغيل من خلال وحدة تحكُّم عن بُعد تتضمّن فقط أزرارًا للأعلى وللأسفل ولليسار ولليمين وللاختيار و"رجوع" و"الصفحة الرئيسية". إذا كان تطبيقك عبارة عن لعبة تتطلّب عادةً وحدة تحكّم في الألعاب مزوّدة بعناصر تحكّم إضافية، حاوِل تعزيز أسلوب اللعب باستخدام عناصر التحكّم في لوحة التحكّم فقط. ويمكنك أيضًا تحذير المستخدم من ضرورة استخدام وحدة تحكّم والسماح له بالخروج من اللعبة بكل سهولة باستخدام لوحة التحكّم.
للاطّلاع على مزيد من المعلومات حول التنقّل باستخدام أزرار لوحات التحكّم لأجهزة التلفزيون، يمكنك الاطّلاع على التنقّل في التلفزيون.
إلغاء ربط وحدة التحكّم في الاسم المعرِّف
غالبًا ما تكون وحدات التحكّم في التلفزيون عبارة عن أجهزة تتضمّن بلوتوث، وقد تحاول توفير الطاقة من خلال الانتقال بشكل دوري إلى وضع السكون والفصل عن جهاز التلفزيون. وهذا يعني أنّه قد تتم مقاطعة تطبيق أو إعادة تشغيله إذا لم يتم إعداده للتعامل مع أحداث إعادة الربط هذه. ويمكن أن تحدث هذه الأحداث في أي من الحالات التالية:
- أثناء تشغيل فيديو تبلغ مدته عدة دقائق، قد يتمّ تفعيل وضع السكون على لوحة التحكّم أو ذراع التحكّم في الألعاب، ويتم إلغاء ربط الجهاز بجهاز التلفزيون وإعادة توصيله في وقت لاحق.
- أثناء أسلوب اللعب، قد ينضم لاعب جديد إلى اللعبة باستخدام ذراع تحكّم في الألعاب غير مرتبطة حاليًا.
- أثناء اللعب، قد يغادر اللاعب اللعبة ويقطع اتصال ذراع التحكّم في الألعاب.
يجب إعداد أي نشاط على تطبيقات التلفزيون يخضع لعمليات إلغاء الربط وإعادة الربط، وذلك لمعالجة أحداث إعادة الربط في بيان التطبيق. ويوضّح نموذج الرموز التالية كيفية تفعيل نشاط لمعالجة تغييرات الضبط، بما في ذلك لوحة المفاتيح أو جهاز التنقّل الذي يتم توصيله أو فصله أو إعادة توصيله:
<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 | مكالمة TransportControls | السُلوك |
---|---|---|
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_R1 | skipToNext() | التخطّي إلى التالي |
BUTTON_L1 | skipToPrevious() | التخطي إلى السابق |
DPAD_RIGHT وBUTTON_R2 وAXIS_RTRIGGER
AXIS_THROTTLE | fastForward() | لقطات عابرة |
DPAD_LEFT وBUTTON_L2 وAXIS_LTRIGGER
AXIS_BRAKE | rewind() | ترجيع |
لا ينطبق | stop() | إيقاف |
ملاحظة: عند استخدام MediaSession
، لا تتجاهل معالجة الأزرار الخاصة بالوسائط، مثل KEYCODE_MEDIA_PLAY
أو KEYCODE_MEDIA_PAUSE
.
يشغّل النظام طريقة
MediaSession.Callback
المناسبة تلقائيًا.
تقديم السلوك المناسب لزر الرجوع
يجب ألا يعمل زر "الرجوع" كزر تبديل مطلقًا. على سبيل المثال، لا تستخدمه لفتح قائمة وإغلاقها معًا. استخدِمها فقط للتنقّل عبر الشاشات السابقة التي كان المشغّل يعمل عليها.
بما أنّ زر "الرجوع" يؤدي فقط إلى الانتقال إلى الخلف الخطي، يمكنك استخدامه لترك القائمة داخل التطبيق مفتوحة بزر مختلف والعودة إلى التطبيق. ويؤدي الضغط باستمرار على الزر "رجوع" إلى الوصول دائمًا إلى شاشة Android TV الرئيسية. على سبيل المثال: تشغيل اللعبة > شاشة إيقاف اللعبة مؤقتًا > الشاشة الرئيسية للعبة > شاشة Android TV الرئيسية أو تشغيل برنامج تلفزيوني > الشاشة الرئيسية لتطبيق التلفزيون > شاشة Android TV الرئيسية
لمزيد من المعلومات عن التصميم للتنقّل، يُرجى الاطّلاع على تصميم التنقل بين الرجوع والأعلى. لمزيد من المعلومات حول عملية التنفيذ، راجِع مقالة توفير طريقة التنقّل إلى الخلف المناسبة.
التعامل مع وحدات التحكّم في الألعاب
إتاحة عناصر التحكّم على لوحة التحكّم
خطِّط عناصر التحكّم في لوحة التحكّم، لأنّ مجموعة التحكّم هذه هي الإعداد التلقائي في أجهزة Android TV. ويجب أن يكون اللاعب قادرًا على استخدام لوحة التحكّم في جميع جوانب اللعبة، وليس فقط التحكم في أسلوب اللعب الأساسي، ولكن أيضًا في التنقل بين القوائم والإعلانات. لهذا السبب، تأكَّد من أنّ لعبتك على Android TV لا تشير إلى واجهة تعمل باللمس تستخدم لغة مثل "انقر هنا للمتابعة".
ويمكن أن تشكّل طريقة تشكيل تفاعل اللاعب مع وحدة التحكّم عاملاً أساسيًا لتحقيق تجربة مستخدم رائعة. ننصحكم باتّباع أفضل الممارسات التالية:
- توضيح متطلبات وحدة التحكّم مقدمًا: يمكنك استخدام الوصف على Google Play لإخبار اللاعب بأي توقعات حول وحدات التحكُّم. إذا كانت هناك لعبة تناسب جهاز تحكّم في الألعاب مزوّدًا بذراع تحكم أكثر من لعبة تستخدم لوحة التحكّم فقط، وضِّح ذلك. وبالتالي، قد تكون تجربة اللعب سيئة لدى اللاعبين الذين يستخدمون وحدة تحكّم غير مناسبة في إحدى الألعاب، ما يؤدي إلى حصول لعبتك على تقييم سيّئ.
- استخدام الربط المتسق للأزرار: يشكّل الربط السلس للأزرار عاملاً أساسيًا في تقديم تجربة مستخدم جيدة. على سبيل المثال، التزِم بالجمارك المقبولة باستخدام الزر A للقبول والزر B للإلغاء. ويمكنك أيضًا تقديم المرونة على شكل إعادة ربط. لمزيد من المعلومات حول ربط الأزرار، يمكنك الاطّلاع على مقالة كيفية التعامل مع إجراءات وحدة التحكّم.
- اكتشاف إمكانات وحدة التحكّم وتعديلها وفقًا لذلك: يمكنك الاستعلام من وحدة التحكّم عن إمكاناتها في تحسين التوافق بين وحدة التحكّم واللعبة. على سبيل المثال، قد يكون الهدف أن يقود اللاعب كائنًا من خلال التلويح بوحدة التحكّم في الهواء، ولكن إذا كانت وحدة التحكّم في اللاعب تفتقر إلى مقياس التسارع وأجهزة الجيروسكوب، لن تعمل ميزة التلويح. يمكنك إرسال طلب بحث إلى وحدة التحكّم، وفي حال لم يكن نظام كشف الحركة متوافقًا، يمكنك التبديل إلى نظام تحكُّم بديل متاح. لمزيد من المعلومات حول الاستعلام عن إمكانات وحدة التحكّم، يُرجى الاطّلاع على مقالة دعم وحدات التحكّم في جميع إصدارات Android.
استخدام الأزرار المناسبة
بعض وحدات التحكّم في الألعاب لا توفّر أزرار "البدء" أو "بحث" أو "القائمة". تأكد من أن واجهة المستخدم لا تعتمد على استخدام هذه الأزرار.
التعامل مع وحدات تحكُّم متعددة
عندما يلعب عدة لاعبين لعبة، لكل منهم وحدة تحكم خاصة به، من المهم
ربط كل زوج من عنصر التحكم باللاعب. للحصول على معلومات عن طريقة تنفيذ تعريف رقم وحدة التحكُّم،
يُرجى الاطّلاع على
getControllerNumber()
.
إلغاء ربط وحدة التحكّم في الاسم المعرِّف
عندما يتم فصل وحدة تحكّم أثناء اللعب، يمكنك إيقاف اللعبة مؤقتًا وعرض مربّع حوار يطلب من اللاعب المفصول ربط وحدة التحكّم.
ويمكنك أيضًا تقديم نصائح بشأن تحديد المشاكل وحلّها في مربّع الحوار. على سبيل المثال، اطلب من المشغّل "التحقّق من اتصال البلوتوث". لمزيد من المعلومات حول إتاحة استخدام أجهزة الإدخال، يمكنك الاطّلاع على إجراءات وحدة التحكّم في الاسم المعرِّف ونظرة عامة على البلوتوث.
عرض تعليمات وحدة التحكّم
إذا كانت لعبتك تقدّم تعليمات مرئية للتحكم في الألعاب، يمكنك استخدام صورة وحدة تحكُّم خالية من العلامات التجارية وتضمين الأزرار المتوافقة مع Android فقط.
للحصول على نماذج صور لوحدة تحكُّم متوافقة مع Android، نزِّل نموذج لوحة ألعاب Android TV (ZIP). وهو يتضمن وحدة تحكم بيضاء على خلفية سوداء ووحدة تحكم سوداء على خلفية بيضاء - كما هو موضح في الشكل 1 - كملف PNG وكملف Adobe® Illustrator®.
![](https://developer.android.com/static/images/games/game-controller-buttons_2x.png?authuser=7&hl=ar)
الشكل 1. مثال على تعليمات وحدة التحكم باستخدام نموذج لوحة ألعاب Android TV.