您的位置:首页 > 移动开发 > IOS开发

iOS之录音

2015-10-16 20:23 375 查看
先在.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];

}
好了就这样简单的录音功能完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: