我写了一个播客音频播放器,并包含了音频焦点原则。
这是我的方法,在媒体播放器的 onPrepared() 方法中调用:
private boolean requestAudioFocus(){
AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT){
pause();
} else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
play();
} else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
Log.d("MYAUDIOSERVICE","Audio Focus lost");
finish();
}
}
};
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
return true;
}
else{
return false;
}
}
问题是:
启动应用程序并播放第一个播客时,一切正常。获得音频焦点,播客继续播放。
当我停止播放并开始另一个播客时,音频焦点再次获得,但在 AudioManager.AUDIOFOCUS_LOSS 被 onAudioFocusChangeListener 接收后不久。
我想是这样的,因为我的应用程序有焦点,再次请求它,获得它,但同时失去了“旧”的。
我是对的,如果那是正确的,我可以在结束播放旧播客时放弃音频焦点吗?
提前谢谢