我正在尝试创建一个在后台播放音乐的无线电应用程序,但是当我的应用程序和其他音乐应用程序同时播放音乐时,我遇到了其他音乐应用程序的问题,因为我试图使用AudioFocus来解决这个问题,我下面的代码是工作的,但在一个方向上。
问题
我的代码:
private AudioManager mAudioManager;
boolean mAudioFocusGranted = false;
private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN:
mediaPlayer.start();
MusicButton.setChecked(false);
break;
case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT:
mediaPlayer.start();
MusicButton.setChecked(false);
break;
case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:
mediaPlayer.start();
MusicButton.setChecked(false);
break;
case AudioManager.AUDIOFOCUS_LOSS:
mediaPlayer.pause();
MusicButton.setChecked(true);
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
mediaPlayer.pause();
MusicButton.setChecked(true);
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
mediaPlayer.setVolume(0.2f,0.2f);
break;
}
}
};
SuppressLint({"CommitPrefEdits", "Assert"})
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MusicButton = findViewById(R.id.toggleButton);
mAudioManager = (AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
mAudioFocusGranted = true;
} else if (result == AudioManager.AUDIOFOCUS_REQUEST_FAILED) {
MusicButton.setChecked(true);
mediaPlayer.pause();
}
}请有人帮我解决这个问题*对不起我的英语
发布于 2018-01-18 21:38:15
这是我上述评论的摘要,如果你想接受它作为回答:
在一个应用程序中暂停音乐/音频通常不会触发焦点更改,从而导致另一个应用程序恢复。应用程序必须调用abandonAudioFocus()或abandonAudioFocusRequest(audioFocusRequest),这通常是为了响应stop()而不是audioFocusRequest()。
点击“谷歌音乐”中的停顿不会引起你的注意力增加。你什么也做不了。如果用户暂停谷歌音乐并想恢复你的应用程序,他们将手动点击你的应用程序,或通过你的媒体通知,如果它仍然可见。
如果您想让Google在您暂停后恢复,您将不得不放弃焦点,在暂停abandonAudioFocus之后调用MediaPlayer。尽管如此,用户并不一定期望从暂停按钮中得到这样的行为。
发布于 2018-01-18 23:52:39
用@Robert的回答和AndroidAudioFocus的演示,我终于解决了我的问题
https://stackoverflow.com/questions/48329178
复制相似问题