دستگاههای تلویزیون برای تعامل با برنامهها به یک دستگاه سختافزار ثانویه نیاز دارند - یک کنترلکننده از راه دور یا کنترلکننده بازی. بنابراین، برنامه شما باید از ورودی پد جهت (D-pad) پشتیبانی کند. همچنین، ممکن است برنامه شما نیاز به کنترل آفلاین بودن کنترلرها و ورودی بیش از یک نوع کنترل کننده داشته باشد.
این راهنما الزامات مربوط به کنترل کننده های دستگاه های تلویزیون را مورد بحث قرار می دهد.
حداقل کنترل های D-pad
کنترلکننده پیشفرض برای دستگاه تلویزیون یک پد D است. به طور کلی، برنامه شما باید از یک کنترل از راه دور قابل اجرا باشد که فقط دارای دکمه های بالا، پایین، چپ، راست، انتخاب، برگشت و صفحه اصلی است. اگر برنامه شما یک بازی است که معمولاً به یک کنترلر بازی با کنترل های اضافی نیاز دارد، سعی کنید فقط با این کنترل های D-pad از گیم پلی پشتیبانی کنید. در غیر این صورت، به کاربر هشدار دهید که به یک کنترلر نیاز است و اجازه دهید با استفاده از کنترلر D-pad، از بازی شما خارج شود.
برای اطلاعات بیشتر در مورد پیمایش با کنترلکنندههای D-pad برای دستگاههای تلویزیون، به ناوبری تلویزیون مراجعه کنید.
کنترلر دسته قطع می شود
کنترلکنندههای تلویزیون معمولاً دستگاههای بلوتوثی هستند که ممکن است با رفتن دورهای به حالت خواب و قطع اتصال از دستگاه تلویزیون، در مصرف انرژی صرفهجویی کنند. این بدان معنی است که اگر برنامه برای مدیریت این رویدادهای اتصال مجدد پیکربندی نشده باشد، ممکن است قطع یا راه اندازی مجدد شود. این رویدادها ممکن است در هر یک از شرایط زیر رخ دهند:
- در حالی که ویدیویی چند دقیقهای پخش میشود، یک 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 راهاندازی مجدد شود، که تجربه کاربری خوبی نیست.
تغییرات ورودی D-pad را مدیریت کنید
کاربران دستگاه تلویزیون ممکن است بیش از یک نوع کنترل داشته باشند که با تلویزیون خود استفاده می کنند. برای مثال، یک کاربر ممکن است هم یک کنترلر اصلی D-pad و هم یک کنترلر بازی داشته باشد. کدهای کلید ارائه شده توسط یک کنترلر بازی زمانی که برای عملکردهای D-pad استفاده می شود ممکن است با کدهای کلید ارسال شده توسط یک D-pad اصلی متفاوت باشد.
تغییرات ورودی D-pad را مدیریت کنید تا کاربر مجبور نباشد برای کار با برنامه شما کنترلرها را تغییر دهد. برای اطلاعات بیشتر در مورد مدیریت تغییرات ورودی، به پردازش ورودی پد جهتی مراجعه کنید.
رویدادهای دکمه را مدیریت کنید
وقتی کاربر روی یک دکمه روی یک کنترلکننده کلیک میکند، برنامه شما رویدادی را با یک KeyEvent
دریافت میکند. رفتار مورد نظر برای دکمه ممکن است یک رویداد رسانه ای باشد، مانند پخش، مکث، یا توقف، یا ممکن است یک رویداد از نوع تلویزیون، مانند انتخاب یا پیمایش باشد. برای ارائه یک تجربه کاربری خوب، رفتار ثابتی را به دکمه های کنترلر اختصاص دهید.
رویدادهای رابط کاربری تلویزیون
رفتار رابط کاربری TV را به دکمه هایی که انواع 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() | عقب |
N/A | stop() | توقف کنید |
توجه: وقتی از MediaSession
استفاده میکنید، کنترل دکمههای رسانه خاص مانند KEYCODE_MEDIA_PLAY
یا KEYCODE_MEDIA_PAUSE
را لغو نکنید. سیستم به طور خودکار روش MediaSession.Callback
مناسب را راه اندازی می کند.
رفتار دکمه برگشت مناسب را ارائه دهید
دکمه برگشت هرگز نباید به عنوان یک کلید عمل کند. به عنوان مثال، از آن برای باز کردن و بستن یک منو استفاده نکنید. فقط از آن برای پیمایش به عقب، به سبک خرده نان، از طریق صفحه های قبلی که پخش کننده در آن بوده است استفاده کنید.
از آنجایی که دکمه Back فقط به صورت خطی و به عقب حرکت می کند، می توانید از آن برای باز گذاشتن منوی درون برنامه با دکمه دیگری استفاده کنید و به برنامه بازگردید. فشار دادن متوالی دکمه بازگشت همیشه باید در نهایت به صفحه اصلی Android TV منتهی شود. به عنوان مثال: بازی > صفحه مکث بازی > صفحه اصلی بازی > صفحه اصلی Android TV یا پخش برنامه تلویزیونی > صفحه اصلی برنامه تلویزیون > صفحه اصلی Android TV.
برای اطلاعات بیشتر در مورد طراحی برای پیمایش، به طراحی پیمایش برگشت و بالا مراجعه کنید. برای آشنایی با پیاده سازی، به ارائه صحیح پیمایش برگشتی مراجعه کنید.
دسته کنترل برای بازی ها
پشتیبانی از کنترل های D-pad
طرح کنترل خود را حول یک کنترل D-pad برنامه ریزی کنید، زیرا این مجموعه کنترل پیش فرض برای دستگاه های Android TV است. بازیکن باید بتواند از یک D-pad برای همه جنبه های بازی استفاده کند - نه تنها بازی اصلی را کنترل کند، بلکه منوها و تبلیغات را نیز هدایت کند. به همین دلیل، مطمئن شوید که بازی Android TV شما به یک رابط لمسی با زبانی مانند "برای ادامه اینجا ضربه بزنید " اشاره نمی کند.
نحوه شکل دادن به تعامل بازیکن با کنترلر می تواند کلید دستیابی به یک تجربه کاربری عالی باشد. بهترین روش های زیر را در نظر بگیرید:
- از ابتدا با نیازهای کنترلر ارتباط برقرار کنید: از توضیحات Google Play خود برای برقراری ارتباط با بازیکن در مورد کنترلرها استفاده کنید. اگر یک بازی برای یک گیمپد با جوی استیک بهتر از بازیای که فقط D-pad دارد مناسب است، این را واضح کنید. بازیکنی که از یک کنترلر نامناسب برای بازی استفاده می کند ممکن است تجربه ضعیفی داشته باشد و به بازی شما امتیاز بدی بدهد.
- از نگاشت دکمه ثابت استفاده کنید: نگاشت بصری دکمه کلید تجربه کاربری خوب است. برای مثال، با استفاده از دکمه A برای پذیرش و دکمه B برای لغو، به آداب و رسوم پذیرفته شده پایبند باشید. شما همچنین می توانید انعطاف پذیری را به شکل قابلیت جایگزینی مجدد ارائه دهید. برای اطلاعات بیشتر در مورد نگاشت دکمه، به اقدامات کنترل کننده دسته مراجعه کنید.
- قابلیتهای کنترلر را شناسایی کنید و بر اساس آن تنظیم کنید: از کنترلر در مورد قابلیتهای آن برای بهینهسازی تطابق بین کنترلر و بازی پرس و جو کنید. به عنوان مثال، ممکن است قصد داشته باشید که یک بازیکن با تکان دادن کنترلر در هوا، یک جسم را هدایت کند، اما اگر کنترلر بازیکن فاقد سخت افزار شتاب سنج و ژیروسکوپ باشد، تکان دادن کار نمی کند. از کنترلر پرس و جو کنید و اگر تشخیص حرکت پشتیبانی نمی شود، به یک طرح کنترل جایگزین و در دسترس بروید. برای اطلاعات بیشتر درباره قابلیتهای کنترلکننده جستجو، به پشتیبانی از کنترلکنندهها در نسخههای Android مراجعه کنید.
از دکمه های مناسب استفاده کنید
همه کنترلرهای بازی دکمه های Start، Search یا Menu را ارائه نمی دهند. مطمئن شوید که رابط کاربری شما به استفاده از این دکمه ها بستگی ندارد.
کنترل کننده های متعدد را کنترل کنید
هنگامی که چندین بازیکن در حال انجام یک بازی هستند که هر کدام کنترلر مخصوص به خود را دارند، مهم است که هر جفت بازیکن-کنترل را نقشه برداری کنید. برای اطلاعات در مورد نحوه پیاده سازی شناسایی شماره کنترلر، به getControllerNumber()
مراجعه کنید.
کنترلر دسته قطع می شود
هنگامی که یک کنترلر در وسط گیم پلی قطع می شود، بازی را متوقف کنید و یک دیالوگ نشان دهید که از بازیکن قطع شده می خواهد دوباره کنترلر خود را وصل کند.
همچنین، نکات عیبیابی را در گفتگو ارائه دهید. به عنوان مثال، به پخش کننده بگویید «اتصال بلوتوث خود را بررسی کنید». برای اطلاعات بیشتر در مورد اجرای پشتیبانی از دستگاه ورودی، به عملکردهای کنترل کننده کنترل و نمای کلی بلوتوث مراجعه کنید.
نمایش دستورالعمل های کنترلر
اگر بازی شما دستورالعملهای کنترل بازی بصری را ارائه میدهد، از یک تصویر کنترلکننده بدون نام تجاری استفاده کنید و فقط دکمههای سازگار با Android را شامل شود.
برای نمونه تصاویر یک کنترلر سازگار با اندروید، قالب بازی Android TV (ZIP) را دانلود کنید. این شامل یک کنترلر سفید در پسزمینه سیاه و یک کنترلکننده سیاه بر روی پسزمینه سفید - نشان داده شده در شکل 1 - به عنوان یک فایل PNG و به عنوان یک فایل Adobe® Illustrator® است.
![](https://developer.android.com/static/images/games/game-controller-buttons_2x.png?hl=fa)
شکل 1. نمونه دستورالعمل های کنترلر با استفاده از قالب بازی Android TV.