2017-04-18 7 views
0

現在、他の音楽プレーヤーをコントロールしています。私は私の音楽プレーヤーを使用して再生を開始し、私はヘッドセットの再生/一時停止ボタンを押すと、それはデフォルトの音楽プレーヤーを制御することを開始した後、私はデフォルトの音楽プレーヤーを持っている場合。 あなたは以下のコード続く活動でhedsethookイベントを取得しようとしている場合、私は、ヘッドセットのボタンコントロール

  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

をこのようなheasetのbroadcastreceiverを実装している:イベントを消費するために、真returtすることを確認します

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

をサービスで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

ご回答ありがとうございます。あなたの答えの最初の部分は私のために有用でした。しかし、ヘッドセットから再生/一時停止ボタンを押すと、私は音楽プレーヤーにオーディオフォーカスを得たいと思っています。 – gagan08

関連する問題