Navigazione con il D-pad su Android TV
Il telecomando di Android TV ha un controllo D-pad che invia comandi che
arrivano come eventi chiave a dispatchKeyEvent(KeyEvent) del tuo Activity. Questi
devono essere delegati a 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); }
Richiedere lo stato attivo per PlayerView è importante per navigare tra i controlli di riproduzione e saltare gli annunci. Valuta la possibilità di richiedere la messa a fuoco in onCreate del
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(); // ... }
Se utilizzi Compose su Android TV, devi rendere AndroidView
focalizzabile e delegare l'evento passando il parametro modificatore a
AndroidView di conseguenza:
AndroidView( modifier = modifier.focusable().onKeyEvent { playerView.dispatchKeyEvent(it.nativeKeyEvent) }, factory = { playerView }, )
Utilizzare il componibile Player
Se utilizzi il composable Player della libreria media3-ui-compose-material3, la navigazione D-pad è supportata per impostazione predefinita. I componenti Player e
PlayerDefaults hanno un'istanza FocusRequester automatica che
attraversa i componenti con il D-pad, quindi non hai bisogno di codice aggiuntivo o
Modifier.focusRequester per gestire gli eventi di messa a fuoco e tasto:
I PlayerDefaults sono disposti negli slot superiore, centrale e inferiore in modo che la
navigazione con il D-pad risulti intuitiva. Per eventuali personalizzazioni e override di questi
slot, assicurati di fornire un componente facilmente navigabile. Tieni presente che la maggior parte dei componenti Compose, come Slider o Row contenenti pulsanti, gestiscono lo stato attivo
pronto all'uso.