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
KEYCODE_SPACE
: Tastencodekonstante für die Leertaste.
Schreiben
onPreviewKeyEvent
: Mit diesem Modifikator kann eine Komponente Hardwaretastenereignisse abfangen, wenn sie (oder eines ihrer untergeordneten Elemente) den Fokus hat.onKeyEvent
: Ähnlich wieonPreviewKeyEvent
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.