Navigation avec le pavé directionnel sur Android TV
La télécommande d'Android TV dispose d'un pavé directionnel qui envoie des commandes qui arrivent sous forme d'événements de touche à dispatchKeyEvent(KeyEvent) de votre Activity. Ces éléments doivent être délégués à 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); }
Il est important de demander le focus pour le PlayerView afin de parcourir les commandes de lecture et de passer les annonces. Envisagez de demander la sélection dans onCreate de 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(); // ... }
Si vous utilisez Compose sur Android TV, vous devez rendre AndroidView focusable et déléguer l'événement en transmettant le paramètre du modificateur dans AndroidView en conséquence :
AndroidView( modifier = modifier.focusable().onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) }, factory = { playerView }, )
Utiliser le composable Player
Si vous utilisez le composable Player de la bibliothèque media3-ui-compose-material3, la navigation au pavé directionnel est prise en charge par défaut. Les composants Player et PlayerDefaults disposent d'une instance FocusRequester automatique qui parcourt les composants avec le pavé directionnel. Vous n'avez donc pas besoin de code supplémentaire ni de Modifier.focusRequester pour gérer les événements de touche et de sélection :
Les PlayerDefaults sont disposés en haut, au centre et en bas pour que la navigation au pavé directionnel soit intuitive. Pour toute personnalisation et remplacement de ces emplacements, assurez-vous de fournir un composant facile à parcourir. Notez que la plupart des composants Compose, tels que Slider ou Row contenant des boutons, gèrent la mise au point prête à l'emploi.