2017-04-18 119 views
0

现在发生的事情是它也控制着其他音乐播放器。如果开始后我有一个默认音乐播放器,如果我开始使用我的音乐播放器播放,然后按耳机中的播放/暂停按钮,它将控制默认音乐播放器。 我实现了一个heaset的BroadcastReceiver这样,耳机按钮控制

  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; 
      } 

回答

0

如果你想获得一个活动hedsethook事件遵循下面的代码:

@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); 
} 

确保ret​​urt真正的消费事件。要在服务中使用BroadCast接收器,如下所示:

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

感谢您的回复@ADM。你的答案的第一部分对我很有用。但是当我按下耳机播放/暂停按钮时,我想要将音频重点放到我的音乐播放器上。 – gagan08