如何在AVAudioPlayer播放的每一秒中逐渐减少歌曲的剩余时间

时间:2012-05-25 07:18:15

标签: iphone

我是iphone的新手。我正在制作音频播放器。我必须在audioplayer中显示当前歌曲的当前时间和剩余时间。在视频播放器中,它将作为默认设置,但在音频播放器中它没有得到,所以我需要编写逻辑来获取歌曲的当前时间。

以下代码适用于

int minutes = (int)audioPlayer.currentTime / 60;
int seconds = (int)audioPlayer.currentTime % 60;
startDurationLabel.text = [NSString stringWithFormat:@"%d:%02d",minutes,seconds];

此处audioPlayerAVAudioPlayer的实例,startDurationLabel是用于显示歌曲当前时间的标签。

我正在努力获得显示歌曲剩余时间的逻辑。它从持续时间的背面逐渐减少,例如歌曲的持续时间是4分钟:52秒然后每秒减少到4分钟:51秒,4分钟:50秒,4分钟:49秒......就像在iPhone视频播放器应用程序中一样。

我尝试过以下代码

NSTimeInterval interval = audioPlayer.duration - audioPlayer.currentTime;
NSLog(@"the interval is %f",interval);

这里我得到时间间隔292, 291, 290的值。渐渐地它会减少,但我希望以min:sec的形式显示那些可能的方式?

如果有人知道这一点,请帮助我。

2 个答案:

答案 0 :(得分:0)

你可以使用NSTimer并每隔一秒发射一次。

NSTimer *progressTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(setProgress) userInfo:nil repeats:YES];

setProgress是您需要更新标签文字的方法。

答案 1 :(得分:0)

创建NSTimer和fire方法timerFired:每秒

[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];

- (void) timerFired:(NSTimer *)timer {
NSTimeInterval remainingTime = audioPlayer.duration - audioPlayer.currentTime;

}

NSTimeInterval与double相同。