LuBut=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[LuBut
setTitle:@"录音"
forState:UIControlStateNormal];
[bgImgView
addSubview:LuBut];
[LuBut addTarget:self
action:@selector(luyin) forControlEvents:UIControlEventTouchUpInside];
LuBut.frame=CGRectMake(30, 290, 60, 20);
UIButton*BOBut=[UIButton buttonWithType:UIButtonTypeRoundedRect];
[BOBut setFrame:CGRectMake(190, 290, 60
, 20)];
[BOBut
setTitle:@"播放"
forState:UIControlStateNormal];
[BOBut
addTarget:self action:@selector(bofang) forControlEvents:UIControlEventTouchUpInside];
[bgImgView
addSubview:BOBut];
====================================================================
//录音后 他会在你的项目目录的temp文件夹里面 创建一个wangshuo.caf 文件
重复录制 他会覆盖上一个,如需多个录音
文件名称可以设置不同名称!
-(void)luyin{
AVAudioSession * audioSession =
[AVAudioSession sharedInstance]; if (!recording) {
recording = YES;
[audioSession
setCategory:AVAudioSessionCategoryRecord error:nil];
[audioSession setActive:YES error:nil];
[LuBut setTitle:@"停止"
forState:UIControlStateNormal];
NSDictionary
*setting = [[NSDictionary
alloc] initWithObjectsAndKeys: [NSNumber numberWithFloat: 44100.0],AVSampleRateKey, [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey, [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey, [NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey, [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,nil];
//然后直接把文件保存成.wav就好了
tmpFile =
[NSURL
fileURLWithPath:
[NSTemporaryDirectory()
stringByAppendingPathComponent:
[NSString stringWithFormat: @"%@.%@",
@"wangshuo",
@"caf"]]];
recorder = [[AVAudioRecorder alloc] initWithURL:tmpFile settings:setting error:nil];
[recorder setDelegate:self];
[recorder prepareToRecord];
[recorder record];
}
else {
recording = NO;
[audioSession setActive:NO error:nil];
[recorder stop];
[LuBut setTitle:@"录音"
forState:UIControlStateNormal];
}
}
//播放音频
-(void)bofang{
NSError *error;
audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:tmpFile
error:&error];
audioPlayer.volume=1;
if (error) {
NSLog(@"error:%@",[error description]);
return;
}
//准备播放
[audioPlayer
prepareToPlay];
//播放
[audioPlayer play];
}
你也可以设置录音动态录音大小 需要定时器 不断刷新当前的音量 这个算法 录音的音量算法
有点小问题!不够灵敏!后期再学习!
//设置定时检测
timer
= [NSTimer
scheduledTimerWithTimeInterval:0
target:self selector:@selector(detectionVoice) userInfo:nil
repeats:YES];
recorder=== AVAudioRecorder;
- (void)detectionVoice
{
[recorder
updateMeters];//刷新音量数据
//获取音量的平均值
[recorder averagePowerForChannel:0];
//音量的最大值
[recorder peakPowerForChannel:0];
double lowPassResults =
pow(10, (0.05 * [recorder peakPowerForChannel:0]));
NSLog(@"%lf",lowPassResults);
//最大50
0
//图片
小-》大
if (0<lowPassResults<=0.06)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_01.png"]];
}else if (0.06<lowPassResults<=0.13)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_02.png"]];
}else if (0.13<lowPassResults<=0.20)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_03.png"]];
}else if (0.20<lowPassResults<=0.27)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_04.png"]];
}else if (0.27<lowPassResults<=0.34)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_05.png"]];
}else if (0.34<lowPassResults<=0.41)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_06.png"]];
}else if (0.41<lowPassResults<=0.48)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_07.png"]];
}else if (0.48<lowPassResults<=0.55)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_08.png"]];
}else if (0.55<lowPassResults<=0.62)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_09.png"]];
}else if (0.62<lowPassResults<=0.69)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_10.png"]];
}else if (0.69<lowPassResults<=0.76)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_11.png"]];
}else if (0.76<lowPassResults<=0.83)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_12.png"]];
}else if (0.83<lowPassResults<=0.9)
{
[self.imageView setImage:[UIImage imageNamed:@"record_animate_13.png"]];
}else {
[self.imageView setImage:[UIImage imageNamed:@"record_animate_14.png"]];
}
}