2011-02-24 197 views
3

我有一个AVAudioRecorder记录声音。我也有一个标签。我想每秒钟更新标签上的文字以显示录制时间。我怎样才能做到这一点?记录时记录时间

+0

检查从苹果此示例代码使用AVAudioPlayer播放文件。它会给你一个想法如何跟踪时间。在AvAudioRecorder中实现相同。 http://developer.apple.com/library/ios/#samplecode/avTouch/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008636 – Viraj 2011-02-24 08:50:55

回答

6

您可以使用AVAudioRecorder(audioRecorder.currentTime)的currentTime属性来获取从您可以用于在标签上显示的记录开始的NSTimeInterval开始的时间。

+0

但是我怎样才能使metjod不断刷新标签? – user591375 2011-02-24 08:31:34

+0

使用定时器或其他方法定期调用方法。 U可以在方法中设置标签的文本。请注意,您需要将AVAudioRecorder对象作为类变量。 – visakh7 2011-02-24 08:41:51

+0

是的,我已经完成了AVAudioRecorder对象作为类变量。并感谢我尝试使用计时器。希望它有效:) – user591375 2011-02-24 08:56:53

6

这样做:

- (IBAction)startStopRecording:(id)sender 
    { 
      //If the app is note recording, we want to start recording, and make the record button say "STOP" 
     if(!self.isRecording) 
     { 
      self.isRecording = YES; //this is the bool value to store that recorder recording 
      [self.recordButton setTitle:@"STOP" forState:UIControlStateNormal]; 

      recorder = [[AVAudioRecorder alloc] initWithURL:recordedFile settings:nil error:nil]; 
      [recorder prepareToRecord]; 
      [recorder record]; 

      myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES]; //this is nstimer to initiate update method 
     } 

     else 
     { 
      self.isRecording = NO; 
      [self.recordButton setTitle:@"REC" forState:UIControlStateNormal]; 

      [recorder stop]; 
      recorder = nil;  
      [myTimer invalidate]; 
     } 

    } 

- (void)updateSlider { 
    // Update the slider about the music time 
    if([recorder isRecording]) 
    { 

     float minutes = floor(recorder.currentTime/60); 
     float seconds = recorder.currentTime - (minutes * 60); 

     NSString *time = [[NSString alloc] 
            initWithFormat:@"%0.0f.%0.0f", 
            minutes, seconds]; 
     recordTimeLabel.text = time; 
    } 
} 
+1

不应该在某处停止计时器吗? ^^ – marsbear 2016-05-03 16:12:50

+0

@marsbear,是的,Thanx用于通知,我在用户停止录制时添加了它。此外,它最好停止在ViewDidDepear/ViewWillDispear计时器,所以如果用户没有停止而不是仍然计时器将停止。 – Dilip 2016-05-04 06:03:20