6

我有一个 iOS 9 应用程序,它使用 AudioGraph 播放类似 MIDI 的歌曲。我已经设置了远程控制命令MPRemoteCommandCenter和信息,MPNowPlayingInfoCenter以便当前播放的歌曲显示在控制中心并响应控制中心按钮按下或耳机按钮按下。点击控制中心中的暂停按钮会暂停我的歌曲,但控制中心中的播放头会继续移动,并且该按钮仍为暂停图标。再次点击它只会继续调用暂停。

有没有办法更新MPNowPlayingInfoCenterorMPRemoteCommandCenter状态,以便控制中心知道歌曲已暂停?

我尝试过的解决方案:

  • 设置和enabled_playCommandpauseCommand

    没有效果

  • 设置MPNowPlayingInfoPropertyPlaybackRate0_MPNowPlayingInfoCenter

    停止播放头前进(如果我没有明确设置它,则重置经过的时间),但按钮仍然是暂停按钮

  • 停止我的音频引擎并调用AVAudioSession.setActive(false)

    这似乎确实有效,但速度很慢,会导致音频故障,即使歌曲暂停,我的应用程序的其他部分也依赖于音频引擎的运行

4

1 回答 1

2

似乎 MPRemoteCommandCenter 知道音频已暂停的唯一方法是停止流式传输,因此您的问题的答案似乎是“否”。可惜我们无法直接控制 Control Center 的传输控制状态……

由于您的应用程序需要持续的音频流,因此您最好的选择似乎是放弃控制中心音频传输支持。也许中间立场是取消对播放和暂停的支持,同时保留当前播放音频的时间线(如上所述,您可以通过将 MPNowPlayingInfoPropertyPlaybackRate 设置为 0 来停止时间线)。

就我而言,按下控制中心的暂停按钮后,仅当我停止流式传输音频时才会显示控制中心播放按钮(在我的情况下,这意味着在我的 AVAudioEngine 实例上调用停止,并且在我的情况下不需要设置我的 AVAudioSession不活动)。停止流式传输也会暂停控制中心的时间线,因此对于采用“停止流式传输”解决方案的其他人,您无需设置 MPNowPlayingInfoPropertyPlaybackRate。

于 2016-05-31T18:50:23.540 回答