Oc 录音机 功能(系统方法)~dome
2017-10-31 19:44
197 查看
认识下面的类
AVAudioRecorder //音频录音机
AVAudioPlayer //音频播放器
![Uploading 20170628224501549_649336.png …]
NSTimer //定时器
2.布局界面 连线
显示时间
回放点击
开始录制
停止录制
回放录音….等操作
AVAudioRecorder //音频录音机
AVAudioPlayer //音频播放器
![Uploading 20170628224501549_649336.png …]
NSTimer //定时器
2.布局界面 连线
显示时间
回放点击
开始录制
停止录制
回放录音….等操作
#import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface ViewController ()<AVAudioRecorderDelegate> { AVAudioRecorder *_audioRecoder;//音频录音机 AVAudioPlayer *_avplayer;//音频播放器 NSTimer *_timer;//定时器 int _count;//保存数量 BOOL _isSwitch;//是否开关 } //开始录制属性 @property (weak,nonatomic) IBOutletUIButton *btnStart; //显示时间 @property (weak,nonatomic) IBOutletUILabel *showTime; //回放属性 @property (weak,nonatomic) IBOutletUIButton *btnPlayBack; //文件路径 @property (nonatomic ,copy) NSString *documentsPath; //开始录制 - (IBAction)startRecording:(id)sender; //停止录制 - (IBAction)stopRecording:(id)sender; //回放录音 - (IBAction)playBackRecording:(id)sender; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _isSwitch =YES; } //开始录制 - (IBAction)startRecording:(id)sender { //判断录音控制器是否为空或者正在录制; if (_audioRecoder==nil &&_audioRecoder.isRecording) { //设置控制器停止录制; [_audioRecoder stop]; //设置按钮的标题为开始录制; [_btnStart setTitle:@"开始录制"forState:UIControlStateNormal]; [_timer invalidate]; _timer =nil; }else{ _count =0; _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(repeatShowTime:)userInfo:@"admin"repeats:YES]; #pragma mark 下面设置录音的参数和录音文件的保存路径等信息 //获取音频文件的保存路径 NSString *destinationStr = [[self documentsPath] stringByAppendingPathComponent:@"sound.wav"]; NSURL *destinationUrl = [NSURL fileURLWithPath:destinationStr]; //创建一个Dictionary,用于保存录制属性 NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] init]; //设置录制音频的格式 [recordSettings setObject:[NSNumber numberWithInt:kAudioFormatLinearPCM]forKey:AVFormatIDKey]; //设置录制音频的采样率 // [recordSettings setObject:[NSNumber numberWithFloat:@"1".floatValue] forKey:AVSampleRateKey]; //设置录制音频的通道数 [recordSettings setObject:[NSNumber numberWithInt:(_isSwitch =/* DISABLES CODE */ (YES) ?2:1)]forKey:AVNumberOfChannelsKey]; //设置录制音频采用高位优先的记录格式 [recordSettings setObject:[NSNumber numberWithBool:YES]forKey:AVLinearPCMIsBigEndianKey]; //设置采样信号采用浮点数 [recordSettings setObject:[NSNumber numberWithBool:YES]forKey:AVLinearPCMIsFloatKey]; NSError *recorderSetupError =nil; #pragma mark 到这里开始实例化录音对象 //初始化AVAudioRecorder _audioRecoder = [[AVAudioRecorder alloc] initWithURL:destinationUrl settings:recordSettings error:&recorderSetupError]; _audioRecoder.delegate =self; [_audioRecoder record]; //设置单个按钮的状态为录音 [_btnStart setTitle:@"正在录音"forState:UIControlStateNormal]; } } //停止播放 - (IBAction)stopRecording:(id)sender { [_audioRecoder stop]; [_btnStart setTitle:@"开始录制"forState:UIControlStateNormal]; //设置计时器为初始值; if (_timer) { [_timer invalidate]; _timer =nil; } _count =0; _showTime.text =@"00:00"; } //回放录音 - (IBAction)playBackRecording:(id)sender { //获取音频文件的保存路径 NSString *destinationString = [[selfdocumentsPath] stringByAppendingPathComponent:@"sound.wav"]; NSURL *url = [NSURLfileURLWithPath:destinationString]; //创建AVAudioPlayer对象 _avplayer = [[AVAudioPlayeralloc] initWithContentsOfURL:urlerror:nil]; //开始播放 [_avplayerplay]; _btnPlayBack.backgroundColor=[UIColorgreenColor]; } //获取Documents目录路径 -(NSString *)documentsPath{ if (!_documentsPath) { NSArray *searchPath =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); _documentsPath = searchPath[0]; } return_documentsPath; } #pragma mark- 录制音频的代理方法 - (void)audioRecorderBeginInterruption:(AVAudioRecorder *)recorder { NSLog(@"---->被中断!"); } - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)aRecorder successfully:(BOOL)flag { if(flag) { NSLog(@"---->录制完成!!"); } } - (void)repeatShowTime:(NSTimer *)tempTimer { _count++; //设置在文本框上显示时间; _showTime.text = [NSStringstringWithFormat:@"%02d:%02d",_count/60,_count%60]; } - (void)dealloc { //销毁NSTimer</span> if (_timer) { [_timerinvalidate]; _timer =nil; } } @end
相关文章推荐
- iOS 录音机 功能(系统方法)~demo
- j2me学习中,文件系统打开功能模块老是出现安全提示的解决方法?
- win10系统如何将操作中心功能关闭掉?win10系统关闭操作中心功能的方法
- Win8.1系统录音文件保存在哪?Win8.1查找录音机录音文件目录的方法
- VirtualBoX虚拟机里安装linux系统,在虚拟系统里安装增强功能报错解决方法
- linux采用编译内核的方法增加系统功能调用
- 当windows 7系统中程序和功能无法卸载IE9,10,11时的方法
- [译]OOSE第4章:面向对象系统的研发 4.2 功能/数据方法Function/data methods
- 企业网站/系统嵌入寄快递功能页面方法
- 在Android系统上定位功能实现方法
- Liferay开源门户系统之cas单点登录功能集成方法
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- CATIA license的安装方法及LicManager系统的功能
- Mac系统 Terminal终端功能使用方法
- Android最简单的图片裁剪方法,非使用系统裁切功能
- 当windows 7系统中程序和功能无法卸载IE9,10,11时的方法
- 【学习ios之路:Objective-C】OC中常用的系统排序方法
- 应用系统功能分析设计方法
- 实现文件右键“打开方式”菜单功能(查看系统这种功能对比实现)(读注册表的方法)
- Win10系统打开或关闭自动维护功能的方法