Mettere in pausa e riprendere la riproduzione di contenuti multimediali con la barra spaziatrice della tastiera esterna

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 la barra spaziatrice su una tastiera fisica.

Rispondere agli eventi di pressione dei tasti

Le app basate su Jetpack Compose o sulle visualizzazioni rispondono alla pressione dei tasti della tastiera in modo simile: l'app ascolta gli eventi di pressione dei tasti, li filtra e risponde alle pressioni dei tasti, ad esempio la pressione della barra spaziatrice.

1. Ascoltare gli eventi della tastiera

Scrivi

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) {
        ...
    }
    ...
})

o

Column(modifier = Modifier.onKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp) {
        ...
    }
    ...
})

Visualizzazioni

In un'attività della tua app, esegui l'override del metodo onKeyUp():

Kotlin

override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
    ...
}

Java

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    ...
}

Il metodo viene richiamato ogni volta che viene rilasciato un tasto premuto, quindi viene attivato esattamente una volta per ogni tasto premuto.

2. Filtrare le pressioni della barra spaziatrice

All'interno dei metodi di modifica onPreviewKeyEvent e onKeyEvent o delle visualizzazioni onKeyUp(), filtra in base a KeyEvent.KEYCODE_SPACE per inviare l'evento corretto al componente multimediale:

Scrivi

Column(modifier = Modifier.onPreviewKeyEvent { event ->
    if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
        ...
    }
    ...
})

o

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 tasto per la barra spaziatrice.

Scrivi

  • onPreviewKeyEvent: modificatore che consente a un componente di intercettare gli eventi dei tasti hardware quando è attivo (o uno dei suoi elementi secondari).
  • onKeyEvent: simile a onPreviewKeyEvent, modificatore che consente a un componente di intercettare gli eventi dei tasti hardware quando il componente (o uno dei relativi elementi secondari) è attivo.

Visualizzazioni

  • onKeyUp(): il gestore di eventi viene chiamato quando un tasto viene rilasciato e non gestito da una visualizzazione (ad esempio TextView) 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.