Android TV

Nawigacja za pomocą pada kierunkowego w Androidzie TV

Pilot Android TV ma pad kierunkowy, który wysyła polecenia docierające jako zdarzenia klawiszy do funkcji dispatchKeyEvent(KeyEvent) w Twojej Activity. Należy je przekazać do 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);
}

Poproszenie o fokus dla PlayerView jest ważne w przypadku nawigowania po elementach sterujących odtwarzaniem i pomijania reklam. Rozważ poproszenie o fokus w funkcji 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 w Androidzie TV, musisz ustawić AndroidView jako element, na którym można ustawić fokus, i przekazać zdarzenie, przekazując odpowiednio parametr modyfikatora do AndroidView

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

Używanie komponentu Player

Jeśli używasz komponentu Player z biblioteki media3-ui-compose-material3, nawigacja za pomocą pada kierunkowego jest obsługiwana domyślnie. Komponenty Player i PlayerDefaults mają automatyczną instancję FocusRequester, która przechodzi przez komponenty za pomocą pada kierunkowego, więc nie potrzebujesz dodatkowego kodu ani Modifier.focusRequester, aby obsługiwać fokus i zdarzenia klawiszy:

Elementy PlayerDefaults są ułożone w górnych, środkowych i dolnych miejscach, dzięki czemu nawigacja za pomocą pada kierunkowego jest intuicyjna. W przypadku wszelkich dostosowań i zastąpień tych miejsc upewnij się, że udostępniasz komponent, po którym można się dobrze poruszać. Pamiętaj, że większość komponentów Compose, takich jak Slider czy Row zawierający przyciski, zarządza fokusem od razu po wyjęciu z pudełka.