2017-07-07 17 views
0

バックグラウンドでデフォルトの音楽プレーヤーが動作していて、私のアプリを使って音楽を再生すると、両方が同時に動作します。他のAPPの音楽を停止する

バックグラウンドミュージックプレーヤーを停止する方法はありますか?

答えて

0

MediaplayerのAudioFocusを実装する必要があります。これを行うには、AudioManagerのインスタンスを取得する必要があります。インスタンスを取得したら、requestAudioFocusを使用できます。

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);  
// Request audio focus for playback 
int result = am.requestAudioFocus(focusChangeListener, 
// Use the music stream. 
AudioManager.STREAM_MUSIC, 
// Request permanent focus. 
AudioManager.AUDIOFOCUS_GAIN); 

if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 
     Log.d("AudioFocus", "Audio focus received"); 
     return true; 
    } else { 
     Log.d("AudioFocus", "Audio focus NOT received"); 
     return false; 
    } 
} 

AudioFocusは、それを要求する各アプリケーションに割り当てられています。あなたのアプリがフォーカスを受け取ると、フォーカスが変化したときのコールバックを提供するAudioManager.OnAudioFocusChangeListenerを渡すことができます。

アプリケーションがオーディオフォーカスを取得し、別のアプリケーションがオーディオフォーカスを要求すると、フォーカスは他のアプリケーションに与えられます。 AndroidはOnAudioFocusChangeListener経由であなたのアプリに通知し、あなたのアプリがその変更に対応できるようにします。フォーカスイベントを受け取るには、このようにAudioManager.OnAudioFocusChangeListenerのインスタンスを渡す必要があります。

private OnAudioFocusChangeListener focusChangeListener = 
      new OnAudioFocusChangeListener() { 
        public void onAudioFocusChange(int focusChange) { 
          AudioManager am =(AudioManager)getSystemService(Context.AUDIO_SERVICE); 
        switch (focusChange) { 

          case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) : 
          // Lower the volume while ducking. 
          mediaPlayer.setVolume(0.2f, 0.2f); 
          break; 
          case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) : 
          pause(); 
          break; 

          case (AudioManager.AUDIOFOCUS_LOSS) : 
          stop(); 
          ComponentName component =new ComponentName(AudioPlayerActivity.this,MediaControlReceiver.class); 
          am.unregisterMediaButtonEventReceiver(component); 
          break; 

          case (AudioManager.AUDIOFOCUS_GAIN) : 
          // Return the volume to normal and resume if paused. 
          mediaPlayer.setVolume(1f, 1f); 
          mediaPlayer.start(); 
          break; 
          default: break; 
} 
} 
}; 

リファレンスドキュメント:https://developer.android.com/guide/topics/media-apps/volume-and-earphones.html

+0

おかげAbhi、今、私は音楽を停止することができるが、再開することができません。 – user8269038

+0

他のアプリはオーディオのフォーカスを要求する必要があります。そのアプリケーションに付与されます。 – Abhi

+0

私はあなたが言うことをあなたに教えてくれませんでしたか? – user8269038

関連する問題