How to stop other apps playing music from my current activity?

后端 未结 2 1132
悲&欢浪女
悲&欢浪女 2020-11-28 09:30

In my app I am trying to make a button which when clicked stops all other apps that are playing music. What I want is similar to that if I am playing music through one music

相关标签:
2条回答
  • 2020-11-28 10:00
    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 .
    }
    

    Audio focus is assigned in turn to each application that requests it. This means that if another application requests audio focus, your application will lose it. You will be notifi ed of the loss of audio focus through the onAudioFocusChange handler of the Audio Focus Change Listener you registered when requesting the audio focus

          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;
    }
    }
    };
    
    0 讨论(0)
  • 2020-11-28 10:11

    You need to use the media players audio focus implementations found in the docs here:

    http://developer.android.com/guide/topics/media/mediaplayer.html#audiofocus

    0 讨论(0)
提交回复
热议问题