Android TV

Nawigacja za pomocą pada kierunkowego na Androidzie TV

Pilot do Androida TV ma pad kierunkowy, który wysyła polecenia docierające jako kluczowe zdarzenia do dispatchKeyEvent(KeyEvent) w 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);
}

Żądanie zaznaczenia elementu PlayerView jest ważne w przypadku poruszania się po elementach sterujących odtwarzaniem i pomijania reklam. Rozważ poproszenie o ustawienie fokusu w elemencie onCreate w obiekcie 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, który można zaznaczyć, i przekazać zdarzenie, przekazując parametr modyfikatora do AndroidView:

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

Używanie funkcji kompozycyjnej Player

Jeśli używasz elementu kompozycyjnego Player z biblioteki media3-ui-compose-material3, nawigacja za pomocą pada kierunkowego jest domyślnie obsługiwana. 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 do obsługi zdarzeń zaznaczenia i klawiszy:

Elementy PlayerDefaults są rozmieszczone w górnych, środkowych i dolnych boksach, dzięki czemu nawigacja za pomocą pada kierunkowego jest intuicyjna. W przypadku dostosowań i zastąpień tych boksów upewnij się, że udostępniasz komponent, który jest łatwy w obsłudze. Pamiętaj, że większość komponentów Compose, takich jak Slider czy Row zawierające przyciski, zarządza zaznaczeniem od razu po zainstalowaniu.