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 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 a onPreviewKeyEvent, 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 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.