Android TV

Nawigacja za pomocą pada kierunkowego na Androidzie TV

Pilot Android TV ma panel kierunkowy, który wysyła polecenia docierające do dispatchKeyEvent(KeyEvent) urządzenia Activity jako kluczowe zdarzenia. Te uprawnienia muszą zostać przekazane na konto 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);
}

Żądanie fokusu dla elementu PlayerView jest ważne w przypadku nawigacji po elementach sterujących odtwarzaniem i pomijania reklam. Rozważ poproszenie o skupienie się na onCreateActivity:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  // ...
  playerView.requestFocus()
  // ...
}

Java

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    playerView.requestFocus();
    // ...
}

Jeśli używasz Compose na Androidzie TV, musisz ustawić AndroidView focusable i przekazać zdarzenie, przekazując parametr modyfikatora do AndroidView:

AndroidView(
  modifier = modifier
    .focusable()
    .onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) },
  factory = { playerView }
)