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