AVAudioPlayer time display

早过忘川 提交于 2019-12-20 14:46:16

问题


I have a simple mp3 playing through AVAudioPlayer and I want to be able to display how much time is left.

I know the answer includes subtracting AVAudioPlayer.duration from AVAudioPlayer.currentTime but I don't know how to implement a function which calculates it while it's playing (like an onEnterFrame in Actionscript I guess). At present currentTime is static, i.e. zero.


回答1:


I would go for an NSTimer. Schedule it to run every second while the media is played and so you can keep your UI updated with the time left.

// Place this where you start to play
NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                     target:self
                                                   selector:@selector(updateTimeLeft)
                                                   userInfo:nil
                                                    repeats:YES];

And create the method to update you UI:

- (void)updateTimeLeft {
    NSTimeInterval timeLeft = self.player.duration - self.player.currentTime;

    // update your UI with timeLeft
    self.timeLeftLabel.text = [NSString stringWithFormat:@"%f seconds left", timeLeft];
}



回答2:


I use it in swift and it work:

// this for show remain time
let duration = Int((player1?.duration - (player1?.currentTime))!)
let minutes2 = duration/60
let seconds2 = duration - minutes2 * 60
durLabel.text = NSString(format: "%02d:%02d", minutes2,seconds2) as String

//this for current time
let currentTime1 = Int((player1?.currentTime)!)
let minutes = currentTime1/60
let seconds = currentTime1 - minutes * 60
curLabel.text = NSString(format: "%02d:%02d", minutes,seconds) as String


来源:https://stackoverflow.com/questions/3571494/avaudioplayer-time-display

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!