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.