Perangkat TV memerlukan hardware sekunder untuk berinteraksi dengan aplikasi, dalam bentuk pengontrol jarak jauh atau pengontrol game dasar. Ini artinya aplikasi Anda harus mendukung input D-pad. Ini juga berarti aplikasi Anda mungkin perlu menangani pengontrol yang offline dan input dari beberapa jenis pengontrol.
Pelajaran ini membahas persyaratan dalam menangani pengontrol untuk perangkat TV.
Kontrol minimum D-pad
Pengontrol default untuk perangkat TV adalah D-pad. Secara umum, aplikasi harus dapat dioperasikan dari pengontrol jarak jauh yang hanya memiliki tombol atas, bawah, kiri, kanan, pilih, Kembali, dan Layar Utama. Jika aplikasi Anda adalah game yang biasanya memerlukan pengontrol game dengan kontrol tambahan, aplikasi tersebut harus mengizinkan alur game dengan kontrol D-pad ini. Dalam hal ini, aplikasi Anda juga harus memperingatkan pengguna bahwa diperlukan sebuah pengontrol dan memungkinkan mereka untuk keluar dari game dengan baik menggunakan pengontrol D-pad. Untuk informasi selengkapnya tentang menangani navigasi dengan pengontrol D-pad untuk perangkat TV, lihat Membuat 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 ini dapat terjadi dalam salah satu situasi berikut:
- Saat menonton video dengan panjang beberapa menit, D-Pad atau pengontrol game akan beralih ke mode tidur, memutus sambungan dari perangkat TV, lalu menyambungkan kembali nantinya.
- Selama alur game, pemain baru bergabung menggunakan pengontrol game yang saat ini tidak tersambung.
- Selama alur game, pemain meninggalkan game dan memutuskan sambungan pengontrol game.
Setiap aktivitas aplikasi TV yang dapat mengalami peristiwa pemutusan sambungan dan penyambungan kembali harus dikonfigurasikan agar dapat menangani peristiwa penyambungan kembali di manifes aplikasi. Contoh kode berikut menunjukkan cara mengaktifkan suatu aktivitas untuk menangani perubahan konfigurasi, termasuk keyboard atau perangkat navigasi yang menyambungkan, memutuskan sambungan, atau menyambungkan ulang:
<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. Misalnya, pengguna mungkin memiliki pengontrol D-pad dasar dan pengontrol game. Kode kunci yang diberikan oleh pengontrol game saat sedang digunakan untuk fungsi D-pad dapat berbeda dengan kode kunci yang dikirim oleh D-pad fisik.
Aplikasi Anda harus menangani variasi input D-pad dari pengontrol game, sehingga pengguna tidak perlu beralih pengontrol secara fisik untuk mengoperasikan aplikasi Anda. Untuk informasi selengkapnya tentang menangani variasi input ini, lihat Tangani tindakan pengontrol.
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 peristiwa jenis TV (seperti pemilihan atau navigasi). Untuk memberikan pengalaman pengguna yang baik, aplikasi Anda harus menetapkan perilaku yang konsisten pada tombol pengontrol.
Peristiwa UI TV
Tombol yang menghasilkan KeyEvents berikut harus ditangani oleh aplikasi sesuai tabel di bawah ini.
KeyEvent | Perilaku |
---|---|
BUTTON_B, BACK | Kembali |
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER | Pemilihan |
DPAD_UP, DPAD_DOWN, DPAD_LEFT, DPAD_RIGHT | Navigasi |
Peristiwa media
Saat pengguna menonton media, tombol-tombol yang menghasilkan KeyEvents berikut harus ditangani oleh aplikasi Anda sesuai tabel di bawah. Jika aplikasi Anda mengontrol MediaSession
, seharusnya menggunakan MediaControllerAdapter
untuk memanggil salah satu metode MediaControllerCompat.TransportControls
seperti yang ditunjukkan di bawah. Perhatikan bahwa tombol pemilihan berfungsi sebagai tombol Putar/Jeda dalam konteks ini.
KeyEvent | Panggilan TransportControls | Perilaku |
---|---|---|
BUTTON_SELECT, BUTTON_A, ENTER, DPAD_CENTER, KEYCODE_NUMPAD_ENTER | pause() | 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 cepat |
DPAD_LEFT, BUTTON_L2, AXIS_LTRIGGER, AXIS_BRAKE | rewind() | Mundur |
(Tidak ada KeyEvent dikaitkan dengan Stop) | stop() | Berhenti |
Menangani pengontrol untuk game
Mendukung kontrol D-pad
Rencanakan skema kontrol Anda di seputar kontrol tombol arah (D-pad), karena set kontrol ini berlaku default untuk perangkat Android TV. Pemain harus dapat menggunakan D-Pad di semua aspek game—bukan hanya mengontrol alur game inti, tetapi juga menavigasi menu dan iklan. Karena alasan ini, Anda juga harus memastikan bahwa game Android TV Anda tidak mereferensikan antarmuka sentuh. Misalnya, game Android TV tidak boleh memberikan perintah "Ketuk di sini untuk melanjutkan" kepada pemain.
Cara Anda membentuk interaksi pemain dengan pengontrol dapat menjadi kunci dalam mencapai pengalaman pengguna yang hebat:
- Sampaikan Persyaratan Pengontrol di Muka. Gunakan deskripsi Google Play Anda untuk mengomunikasikan 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 cenderung mendapatkan pengalaman di bawah standar dan memberikan peringkat yang buruk untuk game Anda.
- Gunakan Pemetaan Tombol yang Konsisten. Pemetaan tombol yang intuitif dan fleksibel adalah kunci dari pengalaman pengguna yang baik. Misalnya, Anda harus mematuhi kebiasaan umum yang diterima seperti menggunakan tombol A untuk Terima, dan tombol B untuk Batal. Anda juga dapat menawarkan fleksibilitas dalam bentuk kemampuan menyetel ulang pemetaan tombol. Untuk informasi selengkapnya tentang pemetaan tombol, bacaMenangani tindakan pengontrol.
- Deteksi Kemampuan Pengontrol dan Sesuaikan. Kirimkan kueri ke pengontrol untuk mengetahui kemampuannya agar Anda dapat mengoptimalkan kecocokan antara pengontrol dan game. Misalnya, Anda mungkin ingin pemain mengarahkan objek dengan melambaikan pengontrol di udara. Namun, jika pengontrol pemain tidak memiliki hardware akselerometer dan giroskop, melambaikan pengontrol seperti itu tidak akan berfungsi. Jadi, game Anda harus mengkueri 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.
Memberikan 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. Misalnya: Alur game > Layar jeda game > Layar utama game > Layar utama Android.
Karena tombol Kembali hanya boleh melakukan navigasi linear (mundur), Anda dapat menggunakannya untuk keluar dari menu dalam game (yang dibuka oleh tombol lain) dan kembali ke game. Untuk informasi selengkapnya tentang desain navigasi, lihat Menavigasi dengan kembali dan ke atas. Untuk mempelajari implementasi, lihat Sediakan navigasi kembali yang tepat.
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 pengontrol banyak
Saat beberapa pemain bermain dengan menggunakan pengontrolnya sendiri-sendiri, sebaiknya petakan setiap pasangan pemain-pengontrol. Untuk informasi tentang cara mengimplementasikan identifikasi nomor pengontrol, lihat
getControllerNumber()
.
Menangani pemutusan sambungan pengontrol
Saat sambungan pengontrol terputus di tengah-tengah alur game, game akan dijeda, dan dialog ditampilkan yang meminta pemain tersebut untuk menyambungkan kembali pengontrolnya.
Dialog ini juga harus menawarkan tips pemecahan masalah (misalnya, dialog pop-up yang meminta pemain untuk "Periksa koneksi Bluetooth Anda"). Untuk informasi selengkapnya tentang mengimplementasikan dukungan perangkat input, lihat Menangani tindakan pengontrol. Informasi spesifik tentang koneksi Bluetooth tersedia di Bluetooth.
Menampilkan petunjuk pengontrol
Jika game Anda memberikan petunjuk kontrol game visual, gambar pengontrol harus 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 file Adobe® Illustrator®.

Gambar 1. Contoh petunjuk pengontrol menggunakan Template Gamepad Android TV (ZIP).