Приостановить / Возобновить MediaPlayer другого / системы на некоторое время - PullRequest
0 голосов
/ 08 октября 2018

У меня есть требование в одном из моих приложений, в котором мне нужно какое-то время проигрывать звук при нажатии кнопки.Теперь наступает случай , если пользователь уже воспроизводит музыку на устройстве, тогда мне нужно приостановить этот музыкальный проигрыватель для воспроизведения моего звука, и после того, как я отпущу свой объект MediaPlayer, я хочу возобновить работу другого приложения (или, по крайней мере,system's) музыкальный проигрыватель.

Мне удалось получить фокусировку звука, как показано ниже -

AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
     if (am!=null){
         am.requestAudioFocus(new AudioManager.OnAudioFocusChangeListener() 
    {
@Override
public void onAudioFocusChange(int focusChange) {

}},
AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
  }

Но этот фрагмент полностью останавливает музыкальный проигрыватель другого приложения и после выпуска моего MediaPlayerобъект AudioService не возвращает фокус музыкальному проигрывателю системы.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Используйте это:

       public void musicPause() {
        AudioManager mAudioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);

        if (mAudioManager.isMusicActive()) {

            Intent i = new Intent("com.android.music.musicservicecommand");

            i.putExtra("command", "pause"); // you can give command here play,pause,resume and stop
            playVideo.this.sendBroadcast(i); // playVideo is my Activity name
        }
    }
0 голосов
/ 08 октября 2018

Вы можете использовать этот код.Для получения дополнительной информации о onAudioFocusChangeListener

 onAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {

 @Override
 public void onAudioFocusChange(int focusChange) {
     switch (focusChange) {
         case (AudioManager.AUDIOFOCUS_LOSS):
             break;
         case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT):
             pause();
             break;
         case (AudioManager.AUDIOFOCUS_GAIN):
             resume();
             break;
         case (AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) :
             // Lower the volume while ducking.
             player.setVolume(0.1f, 0.1f);
             break;
     }
   }
};

int mediaresult = audioManager.requestAudioFocus(onAudioFocusChangeListener, 
AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);

if (mediaresult == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
    //other app stop music you can play now
     //put you play code here..
 }
...