失去音频焦点

Ked*_*edu 6 audio android

我写了一个播客音频播放器并包含了音频聚焦原理。

这是我的方法,在媒体播放器的 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是:

启动应用程序并播放第一个播客时,一切正常。获得音频焦点并且播客继续播放。

当我停止播放并开始另一个播客时,音频焦点再次获得,但在 AudioManager.AUDIOFOCUS_LOSS 被 onAudioFocusChangeListener 接收后不久。

我想情况就是如此,因为我的应用程序具有焦点,再次请求它,获得它,但同时失去了“旧”焦点。

我是对的吗?如果这是正确的,我可以在结束旧播客的播放时放弃音频焦点吗?

提前谢谢