我有一个iOS 9应用程序,可以使用AudioGraph播放类似MIDI的歌曲。我已使用MPRemoteCommandCenter
设置了远程控制命令,并使用MPNowPlayingInfoCenter
设置了信息,以便当前正在播放的歌曲显示在控制中心中,并响应按下控制中心按钮或按下耳机按钮。点击控制中心中的暂停按钮会暂停我的歌曲,但控制中心的播放头会继续移动,按钮仍然是暂停图标。再次点击它只会让呼叫暂停。
有没有办法更新MPNowPlayingInfoCenter
或MPRemoteCommandCenter
状态,以便控制中心知道该歌曲已暂停?
我尝试过的解决方案:
在enabled
和playCommand
pauseCommand
无效
在MPNowPlayingInfoPropertyPlaybackRate
0
设为MPNowPlayingInfoCenter
停止播放头推进(并重置经过的时间,如果我也没有明确设置它),但该按钮仍然是暂停按钮
停止我的音频引擎并致电AVAudioSession.setActive(false)
这似乎有效,但它很慢,导致音频故障,我的应用程序的其他部分依赖音频引擎运行,即使歌曲暂停
答案 0 :(得分:0)
似乎MPRemoteCommandCenter知道音频暂停的唯一方法是停止播放流媒体,因此您的问题的答案似乎是" no"。遗憾的是,我们无法直接控制控制中心的运输控制状态......
由于您的应用需要不断的音频流,看起来您最好的选择是放弃Control Center音频传输支持。也许中间立场是删除对播放和暂停的支持,同时保留当前播放音频的时间线(如上所述,您可以通过将MPNowPlayingInfoPropertyPlaybackRate设置为0来停止时间轴。)
在我的情况下,按下Control Center的暂停按钮后,只有在我停止流式传输音频时才显示控制中心播放按钮(在我的情况下,这意味着在我的AVAudioEngine实例上调用stop,并且没有必要在我的情况下,将我的AVAudioSession设置为非活动状态)。停止流媒体也会暂停控制中心的时间线,因此对于其他人来说,停止播放"停止播放"解决方案,您无需设置MPNowPlayingInfoPropertyPlaybackRate。