Oc 录音机 功能(系统方法)~dome
来源:互联网 发布:淘宝波奇网有假货吗 编辑:程序博客网 时间:2024/05/21 06:43
认识下面的类
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
阅读全文
0 0
- Oc 录音机 功能(系统方法)~dome
- iOS 录音机 功能(系统方法)~demo
- Oc iPad开发~dome
- Notification状态栏 方法 Dome
- Oc MPMoviePlayerController(视频播放器)~dome
- 录音机
- 录音机
- dome
- 安卓实现录音机的录音功能
- IOS 开灯 开启系统手电筒功能(OC)
- windows录音机录制系统内的声音
- OC中的容器类及其功能方法:数组,字典,集合
- 如何让xp系统的录音机录音时间加长
- Win8如何打开系统自带录音机程序
- 修改windows自带录音机录音时间方法
- 延长XP自带录音机的录音时间的方法
- 【OC】OC description方法
- OC-方法
- gcd
- TCP连接探测中的Keepalive 和心跳包
- C++ Primer 学习笔记(第三章)
- 多表设计之间的关系;一对一,一对多,多对多
- ajax工作原理及其相关知识
- Oc 录音机 功能(系统方法)~dome
- Azure Active Directory B2C 获取用户信息标识(头像,名称,用户id)
- 使用PageOffice实现文档(word,excel,pdf)在线预览编辑
- 堆栈和队列的基本用法和操作
- 浅析网站优化的5个必杀技
- Oc MPMoviePlayerController(视频播放器)~dome
- servlet会话技术Cookie,Session
- hdu 1728 逃离迷宫 剪枝DFS
- jsp标签及其EL表达式