Ogni volta che la tua app riproduce un file multimediale, gli utenti devono essere in grado di mettere in pausa e riprendere la riproduzione premendo il tasto barra spaziatrice su una tastiera fisica.
Rispondere agli eventi di pressione dei tasti
Le app basate su Jetpack Compose o sulle visualizzazioni rispondono alle pressioni dei tasti della tastiera in modi simili: l'app ascolta gli eventi di pressione dei tasti, li filtra e risponde alle pressioni dei tasti, ad esempio la pressione del tasto barra spaziatrice.
1. Ascolta gli eventi della tastiera
Compose
Con Jetpack Compose, utilizza il modificatore onPreviewKeyEvent
o onKeyEvent
all'interno del layout che gestisce la sequenza di tasti:
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
oppure
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
Visualizzazioni
In un'attività della tua app, sostituisci il metodo onKeyUp()
:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
Il metodo viene invocato ogni volta che viene rilasciata una chiave premuta, quindi viene attivato esattamente una volta per ogni pressione.
2. Filtra le pressioni della barra spaziatrice
All'interno dei metodi di modifica onPreviewKeyEvent
e onKeyEvent
di Compose o del metodo onKeyUp()
delle visualizzazioni, filtra per KeyEvent.KEYCODE_SPACE
per inviare l'evento corretto al componente multimediale:
Compose
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
oppure
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
Visualizzazioni
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Punti chiave
KEYCODE_SPACE
: costante del codice chiave per la barra spaziatrice.
Compose
onPreviewKeyEvent
: modificatore che consente a un componente di intercettare gli eventi chiave hardware quando è attivo (o uno dei suoi elementi secondari).onKeyEvent
: simile aonPreviewKeyEvent
, modificatore che consente a un componente di intercettare gli eventi chiave hardware quando il componente (o uno dei suoi elementi secondari) ha il focus.
Visualizzazioni
onKeyUp()
: gestore dell'evento chiamato quando un tasto viene rilasciato e non gestito da una visualizzazione (ad esempioTextView
) all'interno di un'attività.
Risultati
Ora la tua app può rispondere alle pressioni del tasto Barra spaziatrice per mettere in pausa e riprendere un video o altri contenuti multimediali.