1 - (IBAction) record:(id)sender 2 { 3 4 NSError *error = nil; 5 BOOL b = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryRecord error:&error]; 6 [[AVAudioSession sharedInstance] setDelegate:self]; 7 if(b){ 8 NSLog(@"set audio session category record victory%d",b); 9 }else { 10 NSLog(@"error=================%@",error); 11 } 12 b = [[AVAudioSession sharedInstance] setActive:YES error:&error]; 13 if(b){ 14 NSLog(@"set active yes %d",b); 15 }else { 16 NSLog(@"error=================%@",error); 17 } 18 NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"voice.caf"]; 19 //NSLog(@"filePath=========================%@",filePath); 20 self.recordFileName = filePath; 21 NSURL *url = [NSURL fileURLWithPath:filePath]; 22 23 AVAudioRecorder *recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error]; 24 mRecorder = recorder; 25 [recorder setDelegate:self]; 26 [recorder prepareToRecord]; 27 28 recorder.meteringEnabled = YES; 29 30 BOOL audioHWAvailable = [[AVAudioSession sharedInstance] inputIsAvailable]; 31 32 // start recording 33 [recorder recordForDuration:(NSTimeInterval) 3]; 34 }
播放相对简单:
1 - (IBAction) play:(id)sender 2 { 3 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 4 AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 5 [[AVAudioSession sharedInstance] setDelegate:self]; 6 NSError *error = nil; 7 BOOL b = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&error]; 8 // if(b){ 9 // NSLog(@"====================%d",b); 10 // }else { 11 // NSLog(@"error=================%@",error); 12 // } 13 14 b = [audioSession setActive:YES error:&error]; 15 // if(b){ 16 // NSLog(@"====================%d",b); 17 // }else { 18 // NSLog(@"error=================%@",error); 19 // } 20 21 NSURL *url = [NSURL fileURLWithPath:self.recordFileName]; 22 //NSLog(@"url============================%@",url); 23 AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 24 player.meteringEnabled = YES; 25 player.volume = 1.0; 26 player.delegate = self; 27 [player prepareToPlay]; 28 [player play]; 29 [pool release]; 30 }