Navigation mit dem Steuerkreuz auf Android TV
Die Fernbedienung von Android TV hat ein Steuerkreuz, über das Befehle gesendet werden, die als Tastaturereignisse bei dispatchKeyEvent(KeyEvent) deines Activity eingehen. Diese müssen an PlayerView delegiert werden:
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); }
Die Anforderung des Fokus für PlayerView ist wichtig, um die Wiedergabesteuerelemente zu verwenden und Anzeigen zu überspringen. Sie können den Fokus in onCreate von Activity anfordern:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... playerView.requestFocus() // ... }
Java
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... playerView.requestFocus(); // ... }
Wenn Sie Compose auf Android TV verwenden, müssen Sie AndroidView fokussierbar machen und das Ereignis delegieren, indem Sie den Modifikatorparameter an AndroidView übergeben:
AndroidView( modifier = modifier.focusable().onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) }, factory = { playerView }, )
Composable Player verwenden
Wenn Sie das Player-Composable aus der media3-ui-compose-material3-Bibliothek verwenden, wird die D-Pad-Navigation standardmäßig unterstützt. Die Komponenten Player und PlayerDefaults haben eine automatische FocusRequester-Instanz, die die Komponenten mit dem Steuerkreuz durchläuft. Du benötigst also keinen zusätzlichen Code oder Modifier.focusRequester, um Fokus- und Tastaturereignisse zu verarbeiten:
Die PlayerDefaults sind in oberen, mittleren und unteren Slots angeordnet, damit die Navigation mit dem Steuerkreuz intuitiv ist. Wenn Sie diese Slots anpassen oder überschreiben, müssen Sie eine gut navigierbare Komponente bereitstellen. Die meisten Compose-Komponenten wie Slider oder Row mit Schaltflächen verwalten den Fokus automatisch.