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 sur des 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 que la barre d'espace.

1. Écouter les événements de clavier

Compose

Avec Jetpack Compose, utilisez le onPreviewKeyEvent ou le onKeyEvent modificateur 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é dans 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 du modificateur Compose onPreviewKeyEvent et onKeyEvent 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, ce modificateur permet à un composant d'intercepter les événements de touche matérielle lorsque celui-ci (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 (telle que 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 de une vidéo ou d'un autre type de contenu multimédia.