放弃音频焦点不会恢复其他应用程序的音乐流



我正在使用允许用户观看视频的应用程序。当他们打开视频观看时,我致电:

AudioManager mAudioManager = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE);
mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);

这停止了当时其他任何应用程序流媒体音乐的播放。我已经测试了播放音乐,Spotify,Soundcloud等,他们都在此时停止音乐播放。

当用户完成视频时,我致电

mAudioManager.abandonAudioFocus(this);

但是正在流媒体音乐和以前暂停的应用程序不会恢复流音乐。我该如何工作?

我已经尝试执行AUDIOFOCUS_GAINAUDIOFOCUS_GAIN_TRANSIENT。我在Stack Overflow上阅读的所有内容都说我只需要发布音频经理即可。这似乎很简单,但我无法弄清楚。我希望该功能类似于Instagram在观看视频时如何暂停和恢复音乐的方式。

当您请求完整的'audio_focus'时,外部应用程序必须点击"播放"按钮以请求'audio_focus'的背部。仅仅因为您的应用程序获得了" audio_focus",然后放弃了它,这不会恢复以前正在播放的音乐/视频。

克服这一点的唯一方法是重新考虑应用程序的要求。因此,您可以请求临时音频焦点,即AudioMomanager.AudioFocus_Gain_Transient(或AudioManager.audiofocus_gain_gain_transient_can_duck

int requestAudioFocusResult = audioManager.requestAudioFocus(TimeWhisperService.this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
if(requestAudioFocusResult == AudioManager.AUDIOFOCUS_GAIN) {
    //ACCESS GRANTED
}

相关内容

最新更新