MPNowPlayingInfoCenter - 经过的时间在音频暂停时保持计数

asp*_*yct 15 core-audio ios mpnowplayinginfocenter

我目前正试图弄清楚如何MPNowPlayingInfoCenter在iOS上指定经过的时间.

当我开始播放时,我将经过时间设置为0并将播放速率设置为1.这样可以正常工作.

然后我暂停音频.这可以通过MPNowPlayingInfoCenter正确检测到,并暂停接口上的已用时间.

只有当我恢复播放时才会出现问题:时间显示就好像暂停时一直播放.例:

1. Start playback
2. Let it play for 10 seconds
3. Pause for 5 seconds
4. Resume playback
Run Code Online (Sandbox Code Playgroud)

此时,轨道中的实际时间为10秒.然而,信息中心显示15.

我试图在暂停时将播放速率设置为0,但这会导致一种奇怪的行为:显示的时间随机变为较低的值.

此外,我没有机会恢复歌曲之前更新已用时间,因为我在收到play活动后才有机会这样做.

tl; dr:如何处理MPNowPlayingInfoCenter中的暂停及其时间特征?

asp*_*yct 14

好吧,实际上将速率设置为0,并在暂停和播放时将时间重置为实际值.

  • 当我将`MPNowPlayingInfoPropertyPlaybackRate`设置为0时,锁定屏幕上的经过时间指示器将返回到零.如果我将"MPNowPlayingInfoPropertyElapsedPlaybackTime"设置为暂停和取消暂停时的当前已用时间(除了分别将播放速率设置为0和1),它似乎工作正常,但文档说经常更新此属性是没有必要的.似乎应该有更好的方法来做到这一点. (6认同)