2017-04-18 1 views
0

Maintenant, ce qui se passe, c'est aussi de contrôler d'autres lecteurs de musique. Si j'ai un lecteur de musique par défaut après le démarrage si je commence à jouer en utilisant mon lecteur de musique, puis j'appuie sur le bouton lecture/pause dans le casque, il contrôle le lecteur de musique par défaut. je l'ai mis en place un ce BroadcastReceiver comme de heaset,Commandes des boutons du casque

  switch (keyEvent.getKeyCode()) { 
       case KeyEvent.KEYCODE_HEADSETHOOK: 
        Log.d("TAG", "TAG: KEYCODE_HEADSETHOOK"); 
        if (MusicService.isPlaying()) { 
         MusicService.player.pause(); 
        } else { 
         MusicService.player.start(); 
        } 
        new MusicService().showNotification(); 
        break; 
       case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: 
        Log.d("TAG", "TAG: KEYCODE_MEDIA_PLAY"); 
        if (MusicService.isPlaying()) { 
         MusicService.player.pause(); 
        } else { 
         MusicService.player.start(); 
        } 
        new MusicService().showNotification(); 
        break; 
       case KeyEvent.KEYCODE_MEDIA_PLAY: 
        break; 
       case KeyEvent.KEYCODE_MEDIA_PAUSE: 
        Log.d("TAG", "TAG: KEYCODE_MEDIA_PAUSE"); 
        break; 
       case KeyEvent.KEYCODE_MEDIA_STOP: 
        break; 
       case KeyEvent.KEYCODE_MEDIA_NEXT: 
        Log.d("TAG", "TAG: KEYCODE_MEDIA_NEXT"); 
        if (MusicService.player.isPlaying()) { 
         MusicService.player.stop(); 
        } 
        if (MusicService.songPosn < (MusicService.song.size() - 1)) { 
         MusicService.songPosn = MusicService.songPosn + 1; 
         if (SingleInstance.getInstance().getIndexCount()>= 1) 
          SingleInstance.getInstance().setIndexCount(SingleInstance.getInstance().getIndexCount()-1); 
        } else { 
         // play first song 
         MusicService.songPosn = 0; 
        } 
        new MusicService().playSong(true); 
        break; 
       case KeyEvent.KEYCODE_MEDIA_PREVIOUS: 
        Log.d("TAG", "TAG: KEYCODE_MEDIA_PREVIOUS"); 
        if (MusicService.player.isPlaying()) { 
         MusicService.player.stop(); 
        } 
        if (MusicService.songPosn > 0) { 
         MusicService.songPosn = MusicService.songPosn - 1; 
        } else { 
         // play last song 
         MusicService.songPosn = MusicService.song.size() - 1; 
        } 
        new MusicService().playSong(true); 
        break; 
      } 

Répondre

0

Si vous essayez d'obtenir l'événement hedsethook une activité suivre le code ci-dessous:

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (event.getKeyCode()) { 
      case KeyEvent.KEYCODE_HEADSETHOOK: 
       // Headset key detected 
       // Do your stuff here 
       return true;// To let the os know that the event is consumed here 
     } 
    } 
    return super.dispatchKeyEvent(event); 
} 

Assurez-vous de returt vrai consommer l'événement .Pour le faire dans un service, utiliser le récepteur BroadCast comme suit:

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);//"android.intent.action.MEDIA_BUTTON" 
MediaButtonIntentReceiver r = new MediaButtonIntentReceiver(); 
filter.setPriority(1000); //Sets receiver priority 
registerReceiver(r, filter); 
+0

Merci pour votre réponse @ADM. La première partie de votre réponse m'a été utile. Mais je veux obtenir une mise au point audio sur mon lecteur de musique lorsque j'appuie sur le bouton lecture/pause du casque. – gagan08