2011-08-20 3 views
13

Existe-t-il un moyen d'écouter les changements de volume avec un service Android et de réagir à cela? Btw: Comment l'application Google Music permet-elle à l'utilisateur de contrôler le volume média même lorsque la musique joue en arrière-plan?Écouteur de changement de volume?

Répondre

12

Découvrez registerMediaButtonEventReceiver(ComponentName broadcastReceiver);

Définition d'une BroadcastReceiver qui gère ACTION_MEDIA_BUTTON. Le intent reçu comprend un seul champ supplémentaire, EXTRA_KEY_EVENT, contenant l'événement clé qui a causé la diffusion. Vous pouvez utiliser cet événement clé pour obtenir quelle touche a été enfoncée.


EDIT:
Ceci est juste un exemple de code. les erreurs de syntaxe peuvent être là.

// in onCreate of activity 
registerMediaButtonEventReceiver(mediaReceiver); 

// later somewhere in activity. 
MediaButton_Receiver mediaReceiver = new MediaButton_Receiver(); 

class MediaButton_Receiver implements BroadcastReceiver { 
    void onReceive(Intent intent) { 

      KeyEvent ke = (KeyEvent)intent.getExtra(Intent.EXTRA_KEY_EVENT); 
      if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 

      } 
      // Similarly other key codes ....... 
    } 
} 

Désenregistrer le récepteur onPause() ou onStop()

+0

Pouvez-vous donner un exemple de cette s'il vous plaît? – kevdliu

+0

J'ai ajouté l'exemple de code. Mais il y a des erreurs de syntaxe. Aussi devrait vérifier la touche d'action vers le bas ou la touche haut. Pour commencer, c'est bon, ajoutez-le plus tard. – Ronnie

+0

N'oubliez pas non plus de désenregistrer le récepteur, sinon les autres applications utilisant l'événement du bouton media peuvent être affectées. – Ronnie

Questions connexes