Navigasi D-pad di Android TV
Remote control Android TV memiliki kontrol d-pad yang mengirim perintah yang tiba sebagai peristiwa tombol di dispatchKeyEvent(KeyEvent) Activity Anda. Ini
harus didelegasikan kepada 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 didukung secara default. Komponen Player dan
PlayerDefaults memiliki instance FocusRequester otomatis yang
melakukan traversal komponen dengan D-pad, sehingga Anda tidak memerlukan kode tambahan atau
Modifier.focusRequester untuk menangani peristiwa fokus dan tombol:
PlayerDefaults disusun di slot atas, tengah, dan bawah sehingga navigasi D-pad terasa intuitif. Untuk penyesuaian dan penggantian pada 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.