Perangkat TV memerlukan perangkat keras sekunder untuk berinteraksi dengan aplikasi—seperti remote kontrol atau pengontrol game dasar. Oleh karena itu, aplikasi Anda harus mendukung input tombol arah (D-pad). Selain itu, aplikasi Anda mungkin perlu menangani pengontrol yang offline dan input dari lebih dari satu jenis pengontrol.
Panduan ini membahas persyaratan dalam menangani pengontrol untuk perangkat TV.
Kontrol minimum D-pad
Pengontrol default untuk perangkat TV adalah D-pad. Secara umum, aplikasi Anda harus dapat dioperasikan dari remote kontrol yang hanya memiliki tombol atas, bawah, kiri, kanan, pilih, kembali, dan beranda. Jika aplikasi Anda adalah game yang biasanya memerlukan pengontrol game dengan kontrol tambahan, coba dukung gameplay hanya dengan kontrol D-pad ini. Jika tidak, peringatkan pengguna bahwa pengontrol diperlukan dan biarkan mereka keluar dari game dengan baik menggunakan pengontrol D-pad.
Untuk informasi selengkapnya tentang navigasi dengan pengontrol D-pad untuk perangkat TV, lihat Navigasi TV.
Menangani pemutusan sambungan pengontrol
Pengontrol untuk TV sering kali berupa perangkat Bluetooth, yang mungkin berusaha menghemat daya dengan secara berkala beralih ke mode tidur dan memutuskan sambungan dari perangkat TV. Ini berarti, aplikasi mungkin akan dijeda atau dimulai ulang jika tidak dikonfigurasi untuk menangani terjadinya penyambungan ulang ini. Peristiwa-peristiwa ini dapat terjadi dalam salah satu keadaan berikut:
- Saat video berdurasi beberapa menit diputar, D-pad atau pengontrol game mungkin masuk ke mode tidur, terputus dari perangkat TV, dan terhubung kembali nanti.
- Selama gameplay, pemain baru dapat bergabung ke game menggunakan pengontrol game yang belum terhubung.
- Selama gameplay, pemain dapat meninggalkan game dan memutuskan sambungan pengontrol game.
Setiap aktivitas aplikasi TV yang rentan terhadap peristiwa pemutusan dan penyambungan kembali harus dikonfigurasi untuk menangani peristiwa penyambungan kembali dalam manifes aplikasi. Contoh kode berikut menunjukkan cara mengaktifkan sebuah aktivitas untuk menangani perubahan konfigurasi, termasuk keyboard atau perangkat navigasi yang terhubung, terputus, atau terhubung kembali:
<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>
Perubahan konfigurasi ini memungkinkan aplikasi terus berjalan meskipun terjadi peristiwa penghubungan ulang, dan bukan dimulai ulang oleh framework Android, yang merupakan pengalaman pengguna yang buruk.
Menangani variasi input D-pad
Pengguna perangkat TV mungkin memiliki lebih dari satu jenis pengontrol yang mereka gunakan dengan TV mereka. Misalnya, pengguna mungkin memiliki pengontrol D-pad dasar dan pengontrol game. Kode tombol yang diberikan oleh pengontrol game saat sedang digunakan untuk fungsi D-pad mungkin berbeda dengan kode tombol yang dikirim oleh D-pad dasar.
Tangani variasi input D-pad agar pengguna tidak perlu mengganti kontroler untuk mengoperasikan aplikasi Anda. Untuk informasi lebih lanjut tentang penanganan variasi input, lihat Proses input directional pad.
Menangani peristiwa tombol
Saat pengguna mengklik tombol pada pengontrol, aplikasi Anda akan menerima peristiwa dengan
KeyEvent. Perilaku yang diharapkan untuk tombol tersebut mungkin berupa peristiwa media, seperti memutar, menjeda, atau menghentikan, atau mungkin berupa peristiwa jenis TV, seperti pemilihan atau navigasi. Untuk memberikan pengalaman pengguna yang baik, tetapkan perilaku yang konsisten pada tombol-tombol kontroler.
Peristiwa UI TV
Tetapkan perilaku UI TV ke tombol yang menghasilkan jenis KeyEvent
seperti yang ditunjukkan dalam tabel berikut:
KeyEvent | Perilaku |
|---|---|
KEYCODE_BUTTON_B, KEYCODE_BACK | Kembali |
KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_A, KEYCODE_ENTER, KEYCODE_DPAD_CENTER, KEYCODE_NUMPAD_ENTER | Pilihan |
KEYCODE_DPAD_UP, KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT,
KEYCODE_DPAD_RIGHT | Navigasi |
Peristiwa media
Saat pengguna menonton media, tetapkan perilaku ke tombol yang menghasilkan jenis
KeyEvent seperti yang ditunjukkan dalam tabel berikut. Jika aplikasi Anda mengontrol MediaSession, gunakan MediaControllerAdapter untuk memanggil salah satu metode MediaControllerCompat.TransportControls yang ditampilkan dalam tabel. Perhatikan bahwa tombol pilihan berfungsi sebagai tombol Putar atau Jeda dalam konteks ini.
KeyEvent | Panggilan TransportControls | Perilaku |
|---|---|---|
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER |
play() | Putar |
BUTTON_START, BUTTON_SELECT, BUTTON_A,
ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER |
pause() | Jeda |
BUTTON_R1 | skipToNext() | Lewati ke berikutnya |
BUTTON_L1 | skipToPrevious() | Lewati ke sebelumnya |
DPAD_RIGHT, BUTTON_R2, AXIS_RTRIGGER,
AXIS_THROTTLE | fastForward() | Maju |
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER,
AXIS_BRAKE | rewind() | Mundur |
| T/A | stop() | Hentikan |
Catatan: Saat Anda menggunakan MediaSession, jangan mengganti penanganan
tombol khusus media, seperti
KEYCODE_MEDIA_PLAY
atau KEYCODE_MEDIA_PAUSE.
Sistem akan otomatis memicu metode
MediaSession.Callback
yang sesuai.
Berikan perilaku tombol Kembali yang sesuai.
Tombol Kembali tidak boleh berfungsi sebagai tombol peralihan (toggle). Misalnya, jangan gunakan tombol Kembali untuk membuka dan juga menutup menu. Tombol ini hanya boleh digunakan untuk menavigasi mundur, dalam gaya breadcrumb, ke layar sebelumnya yang dikunjungi pemain.
Karena tombol Kembali hanya melakukan navigasi linear mundur, Anda dapat menggunakannya untuk keluar dari menu dalam aplikasi yang dibuka oleh tombol lain dan kembali ke aplikasi. Menekan tombol Kembali secara berturut-turut pada akhirnya harus mengarahkan ke layar utama Android TV. Misalnya: gameplay > layar jeda game > layar utama game > layar utama Android TV atau pemutaran acara TV > layar utama aplikasi TV > layar utama Android TV.
Untuk informasi lebih lanjut mengenai desain navigasi, lihat Mendesain Navigasi Kembali dan Naik. Untuk mempelajari implementasi, lihat Menyediakan navigasi kembali yang tepat.
Menangani pengontrol untuk game
Mendukung kontrol D-pad
Rencanakan skema kontrol Anda di seputar kontrol D-pad, karena set kontrol ini berlaku default untuk perangkat Android TV. Pemain harus dapat menggunakan D-pad untuk semua aspek game—bukan hanya mengontrol gameplay inti, tetapi juga menavigasi menu dan iklan. Karena alasan ini, pastikan game Android TV Anda tidak mereferensikan antarmuka sentuh dengan bahasa seperti "Ketuk di sini untuk melanjutkan".
Cara Anda membentuk interaksi pemain dengan pengontrol dapat menjadi kunci dalam mencapai pengalaman pengguna yang hebat. Pertimbangkan praktik terbaik berikut:
- Sampaikan persyaratan pengontrol di muka: gunakan deskripsi Google Play Anda untuk menyampaikan kepada pemain ekspektasi apa pun tentang pengontrol. Jika game lebih cocok dengan gamepad yang menggunakan joystick daripada D-pad, jelaskan hal tersebut. Pemain yang menggunakan pengontrol yang tidak cocok untuk sebuah game mungkin mendapatkan pengalaman yang buruk dan memberikan peringkat yang buruk untuk game Anda.
- Gunakan pemetaan tombol yang konsisten: pemetaan tombol yang intuitif adalah kunci untuk pengalaman pengguna yang baik. Misalnya, patuhi kebiasaan umum yang diterima dengan menggunakan tombol A untuk menerima dan tombol B untuk membatalkan. Anda juga dapat menawarkan fleksibilitas dalam bentuk kemampuan menyetel ulang pemetaan tombol. Untuk informasi lebih lanjut tentang pemetaan tombol, lihat Tangani tindakan pengontrol.
- Mendeteksi kemampuan kontroler dan menyesuaikan sesuai kebutuhan: menanyakan kemampuan kontroler untuk mengoptimalkan kecocokan antara kontroler dan game. Misalnya, Anda mungkin ingin pemain mengarahkan objek dengan melambaikan pengontrol di udara, tetapi jika pengontrol pemain tidak memiliki hardware akselerometer dan giroskop, melambaikan pengontrol seperti itu tidak akan berfungsi. Kueri pengontrol dan, jika deteksi gerakan tidak didukung, beralihlah ke skema kontrol alternatif yang tersedia. Untuk informasi selengkapnya tentang mengkueri kemampuan pengontrol, lihat Mendukung pengontrol di seluruh versi Android.
Menggunakan tombol yang sesuai
Tidak semua pengontrol game menyediakan tombol Mulai, Telusuri, atau Menu. Pastikan UI Anda tidak bergantung pada penggunaan tombol-tombol tersebut.
Menangani banyak pengontrol
Saat beberapa pemain bermain dengan menggunakan pengontrolnya sendiri-sendiri, sebaiknya petakan setiap pasangan pemain-pengontrol. Untuk informasi tentang cara menerapkan identifikasi nomor pengontrol, lihat
getControllerNumber().
Menangani pemutusan sambungan pengontrol
Saat kontroler terputus di tengah permainan, jeda permainan dan tampilkan dialog yang meminta pemain yang terputus untuk menyambungkan kembali kontrolernya.
Selain itu, berikan tips pemecahan masalah dalam dialog. Misalnya, beri tahu pemain untuk "Periksa koneksi Bluetooth Anda". Untuk mengetahui informasi selengkapnya tentang mengimplementasikan dukungan perangkat input, lihat Menangani tindakan pengontrol dan Ringkasan Bluetooth.
Menampilkan petunjuk pengontrol
Jika game Anda memberikan petunjuk kontrol game visual, gunakan gambar pengontrol yang bebas dari label dan hanya menyertakan tombol yang kompatibel dengan Android.
Untuk contoh gambar pengontrol yang kompatibel dengan Android, download Template Gamepad Android TV (ZIP). Template ini menyertakan pengontrol putih pada latar belakang hitam, dan pengontrol hitam pada latar belakang putih (ditunjukkan pada gambar 1), sebagai file PNG dan sebagai file Adobe® Illustrator®.