失去了Audiofocus

时间:2013-10-24 11:31:39

标签: android audio

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

这是我的方法,在媒体播放器的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;
    }
}

问题是:

启动应用并播放第一个播客时,一切正常。获得了Audiofocus,播客继续播放。

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

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

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

提前谢谢

0 个答案:

没有答案