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) dari Activity Anda. Peristiwa ini
harus 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 Anda menggunakan Compose di Android TV, Anda harus membuat AndroidView
dapat difokuskan dan mendelegasikan peristiwa dengan meneruskan parameter pengubah ke
AndroidView dengan tepat:
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:
The PlayerDefaults diatur dalam slot atas, tengah, dan bawah sehingga
navigasi D-pad terasa intuitif. Untuk penyesuaian dan penggantian apa pun pada slot tersebut, pastikan Anda menyediakan komponen yang dapat dinavigasi dengan baik. Perhatikan bahwa sebagian besar komponen Compose, seperti Slider atau Row yang berisi tombol, mengelola fokus secara langsung.