我的應用程序使用AVAudioPlayer播放音樂文件。它還有一個UISlider來調整正在播放的歌曲的位置。然而,在這似乎是改變audioPlayer的持續時間UISlider一個奇怪的錯誤。AVAudioPlayer持續時間改變
當歌曲開始時,作爲這一進程的一部分,值設置像這樣:
audioPlayer.currentTime = 0;
seekingSlider.maximumValue = [audioPlayer duration];
seekingSlider.value = audioPlayer.currentTime;
這工作沒有任何問題。然後我有一個NSTimer更新播放時間和seekSlider。這似乎也沒有問題。當用戶改變了追求,那然後去下面seekingChanged
功能。
- (IBAction)seekingChanged:(id)sender
{
audioPlayer.currentTime = seekingSlider.value;
[self updatePlayedTimeLabel:audioPlayer.currentTime];
}
- (void)updatePlayedTimeLabel:(NSTimeInterval)time {
playedTime.text = [NSString stringWithFormat:@"%d:%02d", (int)time/60, (int)time % 60, nil];
[playedTime sizeToFit];
}
請注意,我無法寫入audioPlayer.duration。我只是從開頭和各種NSLog語句中讀取它來調試發生的事情。令我驚訝的是,它發生了變化。下面是在歌曲的開頭一個樣本輸出,只是在設置這些值之後:只是暫停其55秒在後
after setting, seeking slider is at 0.000000/278.981384, audioplayer is at 0.000000/278.981375
這裏有另外一個,:
pausing, seeking slider is at 55.884716/278.981384, audioplayer is at 55.946236/274.689354
是否與audioPlayer一個已知的bug改變持續時間?這表現爲一個壞的錯誤,當用戶改變滑塊並將其移動到下一首歌曲,因爲audioPlayerDidFinishPlaying被調用。
呀,因爲張貼,我意識到了這一點。謝謝馬特。 – user592419 2013-04-28 16:47:56