8 votes

Comment capturer une pression longue sur la touche volume bas dans Android ?

Je me demandais si quelqu'un pouvait me dire comment capturer la pression longue de la touche de réduction du volume dans Android.

Question élaborée :

J'ai voulu créer un Récepteur de radiodiffusion qui recevra l'événement de pression longue du volume. (sans aucune interaction avec l'interface utilisateur). Je sais que c'est possible pour le bouton de recherche. Est-ce possible pour les touches de volume ?

Gracias

7voto

ingsaurabh Points 10892

Le code ci-dessous peut peut-être vous aider :

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
     // to your stuff here
     return true;
  }
  return super.onKeyLongPress(keyCode, event);
}

3voto

Hunkeone Points 70

Notez que pour gérer onKeyLongPress(), vous devez suivre l'événement onKeyDown() et les remplacer tous les deux. Veuillez noter les exemples suivants.

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    if(keyCode==KeyEvent.KEYCODE_VOLUME_UP){
        event.startTracking();
        return true;
    }
    return super.onKeyDown(keyCode,event);
}
 @Override
public boolean onKeyLongPress(int keyCode,KeyEvent event){
    if(keyCode==KeyEvent.KEYCODE_VOLUME_UP){
        //Do your stuff here
        return true;
    }
    return onKeyLongPress(keyCode,event);
}

Notez également que l'option onKeyDown renvoie par défaut la valeur false. Ainsi, en déclenchant onKeyDown(), le volume ne sera pas augmenté.

1voto

Ricky Ng Points 56

Je pense qu'il est théoriquement possible de réaliser la capture des pressions longues sur le bouton de volume, mais c'est une mauvaise idée. Le processus impliquerait de surcharger la méthode onKeyLongPress().

Pour ce qui est de la raison pour laquelle il est mal conseillé : Contrôle du volume dans une application Android y Comment puis-je gérer les volumes audio de manière raisonnable dans mon application Android ?

Cela a déjà été discuté et, en gros, les clés ont des comportements par défaut qui ne doivent pas être écrasés parce qu'il est possible de "briser le comportement des clés de volume".

0voto

Sam Points 41

Essayez avec cette commande

adb shell input keyevent --longpress KEYCODE_VOLUME_DOWN

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X