您的位置:首页 > 运维架构

AVFoundation框架实现录音和播放(AVAudioRecorder、AVAudioPlayer)

2014-08-27 20:17 323 查看
最近实现了一个简单功能,类似微信发送语音,按下录音,松开结束录音;并且可播放;



需要导入

#import <AVFoundation/AVFoundation.h>

利用此框架中的

AVAudioRecorder和AVAudioPlayer来录音和播放

以下是AVAudioRecorder录音的使用方法:

[cpp] view
plaincopy

- (IBAction)downAction:(id)sender {

//按下录音

if ([self canRecord]) {

NSError *error = nil;

//必须真机上测试,模拟器上可能会崩溃

recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL URLWithString:playName] settings:recorderSettingsDict error:&error];

if (recorder) {

//是否允许刷新电平表,默认是off

recorder.meteringEnabled = YES;

//创建文件,并准备录音

[recorder prepareToRecord];

//开始录音

[recorder record];

//启动定时器,为了更新电平

timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(levelTimer:) userInfo:nil repeats:YES];

} else

{

int errorCode = CFSwapInt32HostToBig ([error code]);

NSLog(@"Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode);

}

}

}

- (IBAction)upAction:(id)sender {

//松开 结束录音

//录音停止

[recorder stop];

recorder = nil;

//结束定时器

[timer invalidate];

timer = nil;

//图片重置

soundLodingImageView.image = [UIImage imageNamed:[volumImages objectAtIndex:0]];

}

以下是AVAudioPlayer播放器的使用方法:

[cpp] view
plaincopy

- (IBAction)playAction:(id)sender {

NSError *playerError;

//播放

player = nil;

player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:playName] error:&playerError];

if (player == nil)

{

NSLog(@"ERror creating player: %@", [playerError description]);

}else{

[player play];

}

}

如果是7.0,第一次运行会提示,是否允许使用麦克风:



7.0需要设置:

[cpp] view
plaincopy

if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending)

{

//7.0第一次运行会提示,是否允许使用麦克风

AVAudioSession *session = [AVAudioSession sharedInstance];

NSError *sessionError;

//AVAudioSessionCategoryPlayAndRecord用于录音和播放

[session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];

if(session == nil)

NSLog(@"Error creating session: %@", [sessionError description]);

else

[session setActive:YES error:nil];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: