先在.h中声明这些熟悉,当然要引进 AVFoundation/AVFoundation.h 头文件
在.m中实现下面方法
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//设置刚打开的录音为不录音状态
self.isRecording = NO;
//播放按钮不能被点击
[self.play setEnabled:NO];
self.play.titleLabel.alpha = 0.5;
//创建一个临时文件夹用于存放录音
self.tmpFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"TmpFile"]];
NSLog(@"%@",self.tmpFile);
//设置后台播放
AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *error = nil;
[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
//判断后台有没有播放
if (session == nil) {
NSLog(@"qqqqqqqq%@", [error description]);
}
else
{
[session setActive:YES error:nil];
}
self.play = [UIButton buttonWithType:UIButtonTypeSystem];
[self.play setTitle:@"播放" forState:UIControlStateNormal];
[self.view addSubview:self.play];
[self.play addTarget:self action:@selector(playbu:) forControlEvents:UIControlEventTouchUpInside];
self.play.frame = CGRectMake(100, 80, 175, 50);
self.record = [UIButton buttonWithType:UIButtonTypeSystem];
[self.record setTitle:@"录音" forState:UIControlStateNormal];
[self.view addSubview:self.record];
[self.record addTarget:self action:@selector(recordbu:) forControlEvents:UIControlEventTouchUpInside];
self.record.frame = CGRectMake(100, 200, 175, 50);
}
- (void)recordbu:(UIButton *)sender {
//判断当前录音状态
if (!self.isRecording) {
//变成录音状态
self.isRecording = YES;
//将录音按钮变成停止
[self.record setTitle:@"停止" forState:UIControlStateNormal];
//此时将播放按钮设置为不能点击
[self.play setEnabled:NO];
self.play.titleLabel.alpha = 0.5;
//将录音文件保存到缓存文件
self.recorder = [[AVAudioRecorder alloc] initWithURL:self.tmpFile settings:nil error:nil];
//准备记录录音
[self.recorder prepareToRecord];
//启动或者恢复记录录音的录音文件
[self.recorder record];
self.player = nil;
}
//录音状态
else
{
self.isRecording = NO;
[self.record setTitle:@"录音" forState:UIControlStateNormal];
//录音停止的时候, 播放按钮可以点击
[self.play setEnabled:YES];
self.play.titleLabel.alpha = 1;
//停止录音
[self.recorder stop];
self.recorder = nil;
NSError *error = nil;
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:self.tmpFile error:&error];
//当播放的录音为空, 打印错误信息
if (self.player == nil) {
NSLog(@"%@", [error description]);
}
self.player.delegate = self;
}
}
- (void)playbu:(UIButton *)sender {
//判断是否在播放, 如果正在播放
if ([self.player isPlaying]) {
//暂停
[self.player pause];
//按钮显示为播放
[self.play setTitle:@"播放" forState:UIControlStateNormal];
}
else{
//开始播放
[self.player play];
//按钮显示为暂停
[self.play setTitle:@"暂停" forState:UIControlStateNormal];
}
}
/* 代理方法 录音完成后 */
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
//按钮标题变为播放
[self.play setTitle:@"播放" forState:UIControlStateNormal];
}
好了就这样简单的录音功能完成。