Controlling the Audio Recorder
After constructing an AVAudioRecorder, we have quite a bit of control over it. Table 2 lists all of the methods that can be called on a recorder to control the recording session.
| Method | Description |
|---|---|
| -(BOOL)prepareToRecord | Creates the recording file on disk at the specified URL path. This method also prepares the system for recording. |
| -(BOOL)record | Starts or resumes recording. This method will implicitly call the prepareToRecord method. |
| -(BOOL)recordForDuration:(NSTimeInterval)duration | Starts or resumes recording. This method will implicitly call the prepareToRecord method. |
| -(void)pause | Pauses a recording. To resume recording, simply call the record method again |
| -(void)stop | Stops the recording and closes the audio file. |
| -(BOOL)deleteRecording | Deletes the current recording. For this method to work, the recording must be stopped. |
The code below will show you how to make a simple toggleRecord method that can be used as an IBAction for a button. The code assumes you have created a few global properties. These properties include recording of type BOOL and soundRecorder of type AVAudioRecorder:
- (IBAction) toggleRecord:(id) sender {
if (recording) {
[soundRecorder stop];
} else {
[soundRecorder record];
}
recording = !recording;
}
When toggleRecord is called for the first time, record is set to NO. This will start the audio recording and set the recording property to YES. The system will create the recording file and begin receiving input from the built in microphone. If the iPhone headset is plugged in, it will use the headset's microphone instead.
The second time toggleRecord is called, the recorder will stop recording. This will close the audio file and allow it to be played. The recording property is also set to NO.


