IOS 知识积累iOS开发技术分享

关于iOS 录音功能

2016-06-07  本文已影响761人  Wo的小名叫单纯

啥也不说,直接上代码,复制即可

首先要引进系统包​CoreGraphics.framework    Foundation.framework    UIKit.framework    AVFoundation.framework(必须要引入)

h文件引入头文件#import ​

#import

#import

@interface ViewController : UIViewController//此处设置代理

@property(nonatomic,strong)UIButton *recoron;//录音button

@property(nonatomic,strong)UIButton *playButton;//播放button

//录音存储路径

@property(nonatomic,strong)NSURL *tmpFile;

//录音

@property(nonatomic,strong)AVAudioRecorder *recorder;

//播放

@property(nonatomic,strong)AVAudioPlayer *player;

//录音状态

@property(nonatomic,assign)BOOL isRecoding;

@end

m文件

写出两个button

self.playButton = [[UIButtonalloc] initWithFrame:CGRectMake(10, 50, 100, 30)];

self.playButton.backgroundColor = [UIColororangeColor];

[self.playButtonsetTitle:@"play"forState:(UIControlStateNormal)];

[self.playButtonsetTitleColor:[UIColorwhiteColor] forState:(UIControlStateNormal)];

[self.playButtonaddTarget:selfaction:@selector(playButtonAction:) forControlEvents:(UIControlEventTouchUpInside)];

[self.viewaddSubview:_playButton];

self.recoron = [[UIButtonalloc] initWithFrame:CGRectMake(130, 50, 100, 30)];

self.recoron.backgroundColor = [UIColorgrayColor];

[self.recoronsetTitle:@"start"forState:(UIControlStateNormal)];

[self.recoronsetTitleColor:[UIColorwhiteColor] forState:(UIControlStateNormal)];

[self.recoronaddTarget:selfaction:@selector(startButtonAction:) forControlEvents:(UIControlEventTouchUpInside)];

[self.viewaddSubview:_recoron];

​下面方法写在viewDidLoad中

//刚打开的时候录音状态未不录音;

self.isRecoding = NO;

//播放按钮不能被点击

[self.playButton setEnabled:NO];

//播放按钮设置为半透明

self.playButton.titleLabel.alpha = 0.5;

//创建临时文件夹来存放录音文件

self.tmpFile = [NSURLfileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"TmpFile"]];

//设置后台播放

AVAudioSession *session = [AVAudioSessionsharedInstance];

NSError *sessionError;

[session setCategory:AVAudioSessionCategoryPlayAndRecorderror:&sessionError];

//判断后台有没有播放

if(session == nil){

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

}else{

[session setActive:YES error:nil];

}

​两个button点击事件里面

播放button

-(void)playButtonAction:(UIButton *)sender

{

NSLog(@"play");

//判断是否正在播放,如果正在播放

if([self.player isPlaying]){

//暂停播放

[_player pause];

//按钮显示为播放

[self.playButtonsetTitle:@"播放"forState:(UIControlStateNormal)];

}else{

//开始播放

[_player play];

//按钮显示为暂停

[self.playButtonsetTitle:@"暂停"forState:(UIControlStateNormal)];

}

}

录音button

-(void)startButtonAction:(UIButton *)sender

{

NSLog(@"start");

//判断当录音状态为不录音的时候

if(!self.isRecoding){

//将录音状态变为录音

self.isRecoding = YES;

//将录音按钮变为停止

[self.recoronsetTitle:@"停止"forState:(UIControlStateNormal)];

//播放按钮不能被点击

[self.playButton setEnabled:NO];

self.playButton.titleLabel.alpha = 0.5;

//开始录音,将所获取到的录音存到文件里

self.recorder = [[AVAudioRecorderalloc] initWithURL:_tmpFilesettings:nilerror:nil];

//准备记录录音

[_recorderprepareToRecord];

//启动或者回复记录的录音文件

[_recorder record];

_player = nil;

}else{

//录音状态点击录音按钮,停止录音

self.isRecoding = NO;

[self.recoronsetTitle:@"录音"forState:(UIControlStateNormal)];

//录音停止的时候,播放按钮可以点击

[self.playButton setEnabled:YES];

[self.playButton.titleLabel setAlpha:1];

//停止录音

[_recorder stop];

_recorder = nil;

NSError *playError;

self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:_tmpFile error:&playError];

//当播放录音为空,打印错误信息

if(self.player == nil){

NSLog(@"Error crenting player: %@", [playError description]);

}

self.player.delegate = self;

}

}

​点击事件写完后,最后必须调用这个事件

//播放结束后调用方法

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

{

//按钮标题变为播放

[self.playButtonsetTitle:@"播放"forState:UIControlStateNormal];

}

上一篇 下一篇

猜你喜欢

热点阅读