Wiedergabe von Medien mit der Leertaste auf einer externen Tastatur pausieren und fortsetzen

Wenn Ihre App eine Mediadatei abspielt, sollten Nutzer die Wiedergabe durch Drücken der Leertaste auf einer physischen Tastatur pausieren und fortsetzen können.

Auf Tastendruckereignisse reagieren

Apps, die auf Jetpack Compose oder Ansichten basieren, reagieren auf ähnliche Weise auf Tastendrücke: Die App wartet auf Tastendruckereignisse, filtert die Ereignisse und reagiert auf Tastendrücke wie einen Leertastendruck.

1. Auf Tastaturereignisse warten

Schreiben

Verwenden Sie mit Jetpack Compose entweder den Modifier onPreviewKeyEvent oder onKeyEvent im Layout, das den Tastendruck verarbeitet:

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

oder

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

Aufrufe

Überschreiben Sie in einer Aktivität in Ihrer App die Methode onKeyUp():

Kotlin

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

Java

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

Die Methode wird jedes Mal aufgerufen, wenn eine gedrückte Taste losgelassen wird. Sie wird also genau einmal für jeden Tastendruck ausgelöst.

2. Leertastendrücke filtern

Filtern Sie in den Methoden onPreviewKeyEvent und onKeyEvent des Compose-Modifiers oder in der Methode onKeyUp() der Ansichten nach KeyEvent.KEYCODE_SPACE, um das richtige Ereignis an Ihre Media-Komponente zu senden:

Schreiben

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

oder

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

Aufrufe

Kotlin

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback()
    return true
}
return false

Java

if (keyCode == KeyEvent.KEYCODE_SPACE) {
    togglePlayback();
    return true;
}
return false;

Wichtige Fakten

Schreiben

  • onPreviewKeyEvent: Modifikator, mit dem eine Komponente Hardware-Tastenereignisse abfangen kann, wenn sie (oder eines ihrer untergeordneten Elemente) den Fokus hat.
  • onKeyEvent: Ähnlich wie onPreviewKeyEvent. Mit diesem Modifikator kann eine Komponente Hardware-Tastaturereignisse abfangen, wenn die Komponente (oder eines ihrer untergeordneten Elemente) den Fokus hat.

Aufrufe

  • onKeyUp(): Ereignis-Handler, der aufgerufen wird, wenn eine Taste losgelassen wird und nicht von einer Ansicht (z. B. TextView) in einer Aktivität verarbeitet wird.

Ergebnisse

Ihre App kann jetzt auf das Drücken der Leertaste reagieren, um ein Video oder andere Medien zu pausieren und fortzusetzen.