【问题标题】:Abandoning audio focus does not resume music streaming for other apps放弃音频焦点不会恢复其他应用程序的音乐流
【发布时间】:2017-02-28 19:55:52
【问题描述】:

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

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_GAINAUDIOFOCUS_GAIN_TRANSIENT。我在 Stack Overflow 上读到的所有内容都只是说我只需要发布音频管理器。这似乎很简单,但我无法弄清楚。我希望该功能类似于 Instagram 在您观看视频时暂停和恢复音乐的方式。

【问题讨论】:

    标签: android audio android-audiomanager audio-player android-music-player


    【解决方案1】:

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

    克服这个问题的唯一方法是重新考虑应用程序的要求。因此,您可以请求临时音频焦点,即 AudioManager.AUDIOFOCUS_GAIN_TRANSIENT(或 AudioManager.AUDIOFOCUS_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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 2023-03-24
      • 1970-01-01
      • 2014-08-29
      • 2011-10-06
      • 1970-01-01
      相关资源
      最近更新 更多