Подтвердить что ты не робот

Как остановить другие приложения, играющие музыку из моей текущей деятельности?

В моем приложении я пытаюсь сделать кнопку, которая при нажатии останавливает все другие приложения, которые играют музыку. То, что я хочу, похоже на то, что если я играю музыку через один музыкальный плеер, и если я попробую сыграть какую-то другую музыку через второй музыкальный плеер, текущий музыкальный плеер остановится, а затем начнется второй. Как остановить другие приложения, играющие музыку из текущей активности/приложения?

4b9b3361

Ответ 1

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) {
// other app had stopped playing song now , so u can do u stuff now .
}

Акустический фокус назначается по очереди на каждое приложение, которое запрашивает его. Это означает, что , если другое приложение запрашивает фокус звука, ваше приложение потеряет его. Вы будете уведомлены об утрате аудио фокус через обработчик onAudioFocusChange прослушивателя аудиофонического звука. регистрируется при запросе фокуса звука

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