4

我写了一个播客音频播放器,并包含了音频焦点原则。

这是我的方法,在媒体播放器的 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 接收后不久。

我想是这样的,因为我的应用程序有焦点,再次请求它,获得它,但同时失去了“旧”的。

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

提前谢谢

4

0 回答 0