Ползунок остановки в конце воспроизведения аудио - PullRequest
4 голосов
/ 11 ноября 2011

В моем проекте я использую AVAudioPlayer для воспроизведения сохраненного звука. Я показываю слайдер для воспроизведения звука.Значение ползунка устанавливается с использованием свойства текущего времени игрока.playSlider.value = avAudioPlayer.currentTime;Это код таймера

updateTimer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(updateCurrentTime) userInfo:p repeats:YES];



//Calls the update current time function 
- (void)updateCurrentTime
{
    [self updateCurrentTimeForPlayer:self.player];
}


//Updates the current time while the audio is playing
-(void)updateCurrentTimeForPlayer:(AVAudioPlayer *)avAudioPlayer
{
    currentTimeLabel.text = [NSString stringWithFormat:@"%d:%02d", (int)avAudioPlayer.currentTime / 60, (int)avAudioPlayer.currentTime % 60, nil];
    playSlider.value = avAudioPlayer.currentTime;

    if (playSlider.value==playSlider.minimumValue) 
    {
        moveToBeginningButton.enabled = NO;
        rewindButton.enabled = NO;
        NSLog(@"PlaySliderMaxValue1 === %f",playSlider.maximumValue);
        NSLog(@"PlaySliderValue1 === %f",playSlider.value);
    }
    else  
    {  
        moveToBeginningButton.enabled = YES;
        rewindButton.enabled = YES; 
        NSLog(@"PlaySliderMaxValue2 === %f",playSlider.maximumValue);
        NSLog(@"PlaySliderValue2 === %f",playSlider.value);

    }
}

Максимальное значение ползунка устанавливается следующим образом:

playSlider.maximumValue = audioPlayer.duration;

Проблема, с которой я сталкиваюсь,что точка ползунка всегда будет возвращаться к началу звука после воспроизведения. Это ошибка?Как я могу изменить это?Пожалуйста, предоставьте ваше предложение.

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Я не могу сказать, является ли это ошибкой или нет, но попробуйте использовать методы делегата AVAudioPlayer. В методе didFinishPlaying установите значение ползунка в MaximumValue. Это может быть одним из решений.

1 голос
/ 11 ноября 2011

Напечатайте значение avAudioPlayer.currentTime перед тем, как назначить его для playslider.value Я думаю, что в конце оно станет нулевым. и он назначит ноль для playslider.value

...