如何跟踪AVAudioFoundation中的循环次数

时间:2017-06-25 04:48:29

标签: ios swift avfoundation avaudioplayer

我正在iOS项目中制作音频播放器。 我通过传递网址名称和音频文件播放次数来设置play(audioOfUrl:URL, for times:Int)方法,如下所示:

func play(audioOfUrl:URL, for times:Int) {

    let urlPath = audioOfUrl
    loopsLeftOver = times
    do {

        let audio = try AVAudioPlayer.init(contentsOf: urlPath)
        audioPlayer = audio
        audio.play()
        audio.numberOfLoops = times - 1


    } catch let error {
        print(error.localizedDescription)
    }
}

还会有pause()resume(),我需要做的是跟踪音频播放器剩余的循环次数。 例如,如果我像这样调用播放方法:

play(audioOfUrl:audioUrl, for times:5)

当音频播放器运行时,我需要留意剩余的时间。

我尝试使用AVAudioPlayerDelegate方法,但它不起作用,如何关注audio.numberOfLoops?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您可以订阅AVPlayerItemDidPlayToEndTime通知,并计算此通知的处理程序被调用的次数。

NotificationCenter.default.addObserver(self, selector:#selector(playerItemDidReachEnd(_:)),
                            name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
                            object: audioPlayer.currentItem)