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];
}
好了就这样简单的录音功能完成。
在.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];
}
好了就这样简单的录音功能完成。
相关文章推荐
- 新浪微博 iOS sso package or sign error 和 error:redirect_uri_mismatch 错误解决方法
- iOS开发中的几种设计模式
- 调整iOS应用的细节
- ios动画
- ios presentViewController:destinationView跳转后黑屏问题
- 我的IOS学习历程-第七天
- iOS学习之iOS沙盒(sandbox)机制和文件操作
- iOS沙盒目录结构解析
- iOS开发者账号总结(三)
- IOS开发者账号的相关配置-子账号(二)
- iOS不使用JSONKit做Dic到JsonString的转换
- 写给iOS小白的MVVM教程(一): 从MVC到MVVM之一个典型的MVC应用场景
- 写给iOS小白的MVVM教程(一): 从MVC到MVVM之一个典型的MVC应用场景
- iOS:核心动画之基本动画CABasicAnimation
- air mobile andriod ios 页面加载控件
- iOS 蓝牙
- iOS9 广告拦截 CONTENT BLOCKER
- ios8 桌面图标圆角数字显示未读消息个数
- iOS mark地址
- ios 下CGImageCreateWithImageInRect 内存泄露