首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何阻止其他应用程序从我当前的活动中播放音乐?

如何阻止其他应用程序从我当前的活动中播放音乐?
EN

Stack Overflow用户
提问于 2013-03-13 23:52:58
回答 2查看 17.5K关注 0票数 18

在我的应用程序中,我正在尝试制作一个按钮,当单击该按钮时,将停止播放音乐的所有其他应用程序。我想要的类似于,如果我通过一个音乐播放器播放音乐,如果我尝试通过第二个音乐播放器播放一些其他音乐,则当前音乐播放器停止,然后第二个音乐播放器开始。我们如何阻止其他应用程序从当前活动/应用程序中播放音乐?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-27 20:20:16

代码语言:javascript
运行
复制
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处理程序通知您音频焦点丢失

代码语言:javascript
运行
复制
      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;
}
}
};
票数 42
EN

Stack Overflow用户

发布于 2013-03-13 23:56:21

您需要使用文档中的媒体播放器音频焦点实现:

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15390126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档