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

Wenn in Ihrer App eine Mediendatei abgespielt wird, sollten Nutzer die Wiedergabe durch Drücken der Leertaste auf einer physischen Tastatur pausieren und fortsetzen können.

Auf Tastenereignisse reagieren

Apps, die auf Jetpack Compose oder auf Ansichten basieren, reagieren auf Tastendrücke auf ähnliche Weise: Die App wartet auf Tastenereignisse, filtert sie und reagiert auf Tastendrücke wie z. B. die Leertaste.

1. Auf Tastaturereignisse warten

Schreiben

Verwenden Sie in Jetpack Compose entweder den Modifikator onPreviewKeyEvent oder onKeyEvent im Layout, das den Tastenanschlag verwaltet:

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 Tastenanschlag ausgelöst.

2. Drücken der Leertaste herausfiltern

Filtere in den Modifiziermethoden „Compose“ onPreviewKeyEvent und onKeyEvent oder in der Methode „Views“ onKeyUp() nach KeyEvent.KEYCODE_SPACE, um das richtige Ereignis an deine Medienkomponente 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: Mit diesem Modifikator kann eine Komponente Hardwaretastenereignisse abfangen, wenn sie (oder eines ihrer untergeordneten Elemente) den Fokus hat.
  • onKeyEvent: Ähnlich wie onPreviewKeyEvent ist dies ein Modifikator, mit dem eine Komponente Hardwaretastenereignisse abfangen kann, wenn die Komponente (oder eines ihrer untergeordneten Elemente) den Fokus hat.

Aufrufe

  • onKeyUp(): Ereignis-Handler, der aufgerufen wird, wenn ein Schlüssel losgelassen wird und nicht von einer Ansicht (z. B. TextView) innerhalb 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.