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

Android 放弃音频焦点不会恢复其他应用程序的音乐流,android,audio,android-audiomanager,audio-player,android-music-player,Android,Audio,Android Audiomanager,Audio Player,Android Music Player,我正在开发一款允许用户观看视频的应用程序。当他们打开视频观看时,我会打电话: AudioManager mAudioManager = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE); mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); 这将停止播放任何其他应用程序的流式

我正在开发一款允许用户观看视频的应用程序。当他们打开视频观看时,我会打电话:

AudioManager mAudioManager = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE);
mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
这将停止播放任何其他应用程序的流式音乐。我用Play Music、Spotify、Soundcloud等进行了测试,它们都在此时停止了音乐播放

当用户看完视频后,我会打电话给他

mAudioManager.abandonAudioFocus(this);
但之前暂停的流媒体音乐应用程序不会恢复流媒体音乐。我怎样才能让它工作


我试过做
AUDIOFOCUS\u GAIN
AUDIOFOCUS\u GAIN\u TRANSIENT
。我在Stack Overflow上读到的所有内容都说我只需要释放音频管理器。这看起来很简单,但我想不出来。我希望其功能与Instagram在观看视频时暂停和恢复音乐的方式类似。

当您请求完整的“音频焦点”时,外部应用程序必须点击播放按钮才能请求返回“音频焦点”。仅仅因为您的应用程序获得了“音频焦点”,然后放弃了它,这就不会恢复以前播放的音乐/视频

克服这一问题的唯一方法是重新考虑应用程序的要求。因此,您可以请求临时音频焦点,即AudioManager.AUDIOFOCUS\u GAIN\u TRANSIENT(或AudioManager.AUDIOFOCUS\u GAIN\u TRANSIENT\u can\u DUCK,具体取决于您是否认为其他音频可以在较低音量的背景下继续播放)

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