Navigasi d-pad di Android TV
Remote kontrol Android TV memiliki kontrol D-pad yang mengirimkan perintah yang
tiba sebagai peristiwa tombol di dispatchKeyEvent(KeyEvent) Activity Anda. Tugas ini
perlu didelegasikan ke PlayerView:
Kotlin
override fun dispatchKeyEvent(event: KeyEvent?): Boolean { return playerView.dispatchKeyEvent(event!!) || super.dispatchKeyEvent(event) }
Java
@Override public boolean dispatchKeyEvent(KeyEvent event) { return playerView.dispatchKeyEvent(event) || super.dispatchKeyEvent(event); }
Meminta fokus untuk PlayerView penting untuk menavigasi kontrol
pemutaran dan melewati iklan. Pertimbangkan untuk meminta fokus di onCreate dari
Activity:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView.requestFocus() // ... }
Java
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView.requestFocus(); // ... }
Jika menggunakan Compose di Android TV, Anda harus membuat AndroidView
dapat difokuskan dan mendelegasikan peristiwa dengan meneruskan parameter pengubah ke
AndroidView:
AndroidView( modifier = modifier.focusable().onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) }, factory = { playerView }, )
Menggunakan composable Player
Jika Anda menggunakan composable Player dari library media3-ui-compose-material3, navigasi D-pad akan didukung secara default. Komponen Player dan
PlayerDefaults memiliki instance FocusRequester otomatis yang
melintasi komponen dengan D-pad, sehingga Anda tidak memerlukan kode tambahan atau
Modifier.focusRequester untuk menangani peristiwa fokus dan tombol:
PlayerDefaults disusun dalam slot atas, tengah, dan bawah sehingga
navigasi D-pad terasa intuitif. Untuk penyesuaian dan penggantian slot tersebut, pastikan Anda menyediakan komponen yang mudah dinavigasi. Perhatikan bahwa sebagian besar komponen Compose, seperti Slider atau Row yang berisi tombol, mengelola fokus secara langsung.