使用AVAudioPlayer显示音频文件剩余时间有没有替代NSTimer的方法?

3
我使用AVAudioPlayer播放音乐并希望显示剩余时间。似乎很多人建议使用每秒触发一次的NSTimer,但我担心这样效率低且容易出错。因为NSTimer的定时不是非常精确(我听说过),它可能会在同一秒内两次触发计时器,倒计时则会跳过一秒。此外,这是一种拉模型。
有没有更明智的方法,让AVAudioPlayer在每秒滴答声时调用我的倒计时?

1
NSTimeInterval remaining = audioPlayer.duration - audioPlayer.currentTime; 这将为您提供剩余时间,但每秒调用一次方法最好使用计时器完成。AVAudioPlayer无法帮助您完成此操作。 - JohnVanDijk
一个重复的定时器在1秒间隔下可以很好地工作。 - MoDJ
2个回答

1
虽然NSTimer有些不够精确,但你仍可以让它每秒钟调用一次,并从歌曲的currentTime属性获取信息,与duration属性进行比较。通过这样的方式,您可以计算剩余时间等。 AVAudioPlayer文档

0

在播放音频文件时,没有可用的回调函数来帮助您处理更新时间显示。NSTimer方法是正确的方法。如果您担心由于NSTimer触发精度而导致显示不准确,只需减少计时器的更新间隔即可。在实现中保持工作负载轻,并将间隔设置为500ms或250ms...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接