Chaque fois que votre application lit un fichier multimédia, les utilisateurs doivent pouvoir suspendre et reprendre la lecture en appuyant sur la barre d'espace d'un clavier physique.
Répondre aux événements de pression sur une touche
Les applications basées sur Jetpack Compose ou les vues réagissent aux pressions sur les touches du clavier de la même manière: l'application écoute les événements de pression sur les touches, les filtre et répond aux pressions de touches telles qu'une pression sur la barre d'espace.
1. Écouter les événements de clavier
Compose
Avec Jetpack Compose, utilisez le modificateur onPreviewKeyEvent
ou onKeyEvent
dans la mise en page qui gère la frappe:
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
ou
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp) {
...
}
...
})
Vues
Dans une activité de votre application, remplacez la méthode onKeyUp()
:
Kotlin
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { ... }
Java
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { ... }
Cette méthode est appelée chaque fois qu'une touche est relâchée. Elle se déclenche exactement une fois pour chaque frappe.
2. Filtrer les appuis sur la barre d'espace
Dans les méthodes des modificateurs onPreviewKeyEvent
et onKeyEvent
Compose, ou dans la méthode onKeyUp()
des vues, filtrez KeyEvent.KEYCODE_SPACE
pour envoyer l'événement approprié à votre composant multimédia:
Compose
Column(modifier = Modifier.onPreviewKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
ou
Column(modifier = Modifier.onKeyEvent { event ->
if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) {
...
}
...
})
Vues
Kotlin
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback() return true } return false
Java
if (keyCode == KeyEvent.KEYCODE_SPACE) { togglePlayback(); return true; } return false;
Points essentiels
KEYCODE_SPACE
: constante de code de touche pour la barre d'espace.
Compose
onPreviewKeyEvent
: modificateur qui permet à un composant d'intercepter les événements de touche matérielle lorsque celui-ci (ou l'un de ses enfants) est sélectionné.onKeyEvent
: à l'instar deonPreviewKeyEvent
, modificateur qui permet à un composant d'intercepter les événements de touche matérielle lorsque le composant (ou l'un de ses enfants) est sélectionné.
Vues
onKeyUp()
: gestionnaire d'événements appelé lorsqu'une touche est relâchée et qu'elle n'est pas gérée par une vue (commeTextView
) dans une activité.
Résultats
Votre application peut désormais réagir aux appuis sur la barre d'espace pour mettre en pause et reprendre la lecture d'une vidéo ou d'un autre type de contenu multimédia.