Pause et reprise de la lecture de contenus multimédias avec la barre d'espace du clavier externe

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 de onPreviewKeyEvent, 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 (comme TextView) 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.