Android TV

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.