Android TV

Nawigacja za pomocą pada kierunkowego na Androidzie TV

Pilot Android TV ma panel kierunkowy, który wysyła polecenia docierające jako kluczowe zdarzenia do dispatchKeyEvent(KeyEvent) Twojego Activity. 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. Możesz poprosić o skupienie się na onCreate w 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();
  // ...
}

Jeśli używasz Compose na Androidzie TV, musisz ustawić AndroidView jako element, na którym można ustawić fokus, i przekazać zdarzenie, przekazując parametr modyfikatora do AndroidView:

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

Użyj komponentu Player

Jeśli używasz komponentu Player z media3-ui-compose-material3biblioteki, nawigacja za pomocą pada kierunkowego jest obsługiwana domyślnie. Komponenty Player i PlayerDefaults mają automatyczną instancję FocusRequester, która przechodzi między komponentami za pomocą pada kierunkowego, więc nie potrzebujesz dodatkowego kodu ani Modifier.focusRequester do obsługi zdarzeń związanych z fokusem i klawiszami:

PlayerDefaults są rozmieszczone w górnym, środkowym i dolnym gnieździe, dzięki czemu nawigacja za pomocą pada kierunkowego jest intuicyjna. W przypadku dostosowań i zastąpień tych miejsc docelowych zadbaj o to, aby udostępnić komponent, po którym można się łatwo poruszać. Pamiętaj, że większość komponentów Compose, takich jak Slider czy Row zawierające przyciski, zarządza fokusem od razu po wyjęciu z pudełka.