IOS开发实现录音功能_IOS

导入框架:

#import <AVFoundation/AVFoundation.h>

声明全局变量:

@interface ViewController ()<AVAudioRecorderDelegate>
{
  AVAudioRecorder *audioRecorder;
}
@end

在ViewDidLoad中:

 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
  button.frame = CGRectMake(100, 100, 100, 100);
  [button setTitle:@"TICK" forState:UIControlStateNormal];
  button.backgroundColor = [UIColor brownColor];
  [button addTarget:self action:@selector(startAudioRecoder:) forControlEvents:UIControlEventTouchUpInside];
  [self.view addSubview:button];

按钮的触发事件

- (void)startAudioRecoder:(UIButton *)sender{
  sender.selected = !sender.selected;
  if (sender.selected != YES) {
    [audioRecorder stop];
    return;
  }

  //  URL是本地的URL AVAudioRecorder需要一个存储的路径
  NSString *name = [NSString stringWithFormat:@"%d.aiff",(int)[NSDate date].timeIntervalSince1970];

  NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject stringByAppendingPathComponent:name];
  NSError *error;
  //  录音机 初始化
  audioRecorder = [[AVAudioRecorder alloc]initWithURL:[NSURL fileURLWithPath:path] settings:@{AVNumberOfChannelsKey:@2,AVSampleRateKey:@44100,AVLinearPCMBitDepthKey:@32,AVEncoderAudioQualityKey:@(AVAudioQualityMax),AVEncoderBitRateKey:@128000} error:&error];
  [audioRecorder prepareToRecord];
  [audioRecorder record];
  audioRecorder.delegate = self;
  /*
   1.AVNumberOfChannelsKey 通道数 通常为双声道 值2
   2.AVSampleRateKey 采样率 单位HZ 通常设置成44100 也就是44.1k
   3.AVLinearPCMBitDepthKey 比特率 8 16 24 32
   4.AVEncoderAudioQualityKey 声音质量
       ① AVAudioQualityMin  = 0, 最小的质量
       ② AVAudioQualityLow  = 0x20, 比较低的质量
       ③ AVAudioQualityMedium = 0x40, 中间的质量
       ④ AVAudioQualityHigh  = 0x60,高的质量
       ⑤ AVAudioQualityMax  = 0x7F 最好的质量
   5.AVEncoderBitRateKey 音频编码的比特率 单位Kbps 传输的速率 一般设置128000 也就是128kbps

   */

  NSLog(@"%@",path);

}

代理方法:

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)recorder successfully:(BOOL)flag{
  NSLog(@"录音结束");
//  文件操作的类
 NSFileManager *manger = [NSFileManager defaultManager];

  NSString *path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
//  获得当前文件的所有子文件subpathsAtPath
  NSArray *pathlList = [manger subpathsAtPath:path];

//  需要只获得录音文件
  NSMutableArray *audioPathList = [NSMutableArray array];
//  遍历所有这个文件夹下的子文件
  for (NSString *audioPath in pathlList) {
//    通过对比文件的延展名(扩展名 尾缀) 来区分是不是录音文件
    if ([audioPath.pathExtension isEqualToString:@"aiff"]) {
//      把筛选出来的文件放到数组中
      [audioPathList addObject:audioPath];
    }
  }

  NSLog(@"%@",audioPathList);

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios开发
录音功能
ios录音功能的实现、ios实现录音功能、ios开发录音功能、ios开发 微信录音功能、ios开发定位功能实现,以便于您获取更多的相关知识。

时间: 2024-11-03 11:38:25

IOS开发实现录音功能_IOS的相关文章

iOS开发之手势识别_IOS

一.UIGestureRecognizer简单介绍 我们已经学习了触摸事件处理,但触摸事件处理起来很麻烦,每个触摸事件处理都需要实现3个touches方法,比较繁琐,实际上我们可以使用更加简单的触摸事件处理操作,那就是 手势识别UIGestureRecognizer . 手势识别操作基类UIGestureRecognizer不能直接使用,我们常使用的是它的子类,这些手势操作类都继承自UIGestureRecognizer类 常用手势识别子类: 点按手势 UITapGestureRecognize

iOS开发之微信聊天工具栏的封装_IOS

微信大家基本上都用过,今天要做的就是微信的聊天工具条.聊天工具条还是比较复杂的,其中包括发送表情,发送文字,发送图片,发送声音,拍照等等功能,下面给出发送录音,文字,表情的代码,其他的和这几样类似.还是那句话百字不如一图,先来几张效果图吧. 在封装聊天工具条的的时候表情键盘是之前封装好的,所以拿过来就可以用的啦.因为不管是工具条还是表情键盘都是用约束来控件大小的,所以横屏也是没问题的,在大屏手机上也是没问题的.下面将会一步步讲解如何封装下面的聊天工具条.主要是对工具条的封装,表情键盘在这就不做讲

iOS多线程开发——NSThread浅析_IOS

在iOS开发中,多线程的实现方式主要有三种,NSThread.NSOperation和GCD,我前面博客中对NSOperation和GCD有了较为详细的实现,为了学习的完整性,今天我们主要从代码层面来实现NSThread的使用.案例代码上传至 https://github.com/chenyufeng1991/NSThread. (1)初始化并启动一个线程 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated

iOS开发之自定义UITextField的方法_IOS

UITextField是IOS开发中用户交互中重要的一个控件,常被用来做账号密码框,输入信息框等. 观察效果图 UITextField有以下几种特点: 1.默认占位文字是灰色的 2.当光标点上去时,占位文字变为白色 3.光标是白色的 接下来我们通过不同的方法来解决问题 一.将xib中的UITextField与代码关联 通过NSAttributeString方法来更改占位文字的属性 (void)viewDidLoad { [super viewDidLoad]; // Do any additio

IOS开发代码分享之设置UISearchBar的背景颜色_IOS

今天用到UISearchBar,之前网上提供的方法已经不能有效的去除掉它的背景色了,修改背景色方法如下: mySearchBar.backgroundColor = RGBACOLOR(249,249,249,1);     mySearchBar.backgroundImage = [self imageWithColor:[UIColor clearColor] size:mySearchBar.bounds.size];   //取消searchbar背景色 - (UIImage *)im

iOS开发中简单实用的几个小技巧_IOS

前言 本文记录了在iOS开发过程中所遇到的小知识点,以及一些技巧,下面话不多说,来看看详细的介绍. 技巧1:UIButton图片与文字默认是左右排列,如何实现右左排列? 解决技巧: button.transform = CGAffineTransformMakeScale(-1.0, 1.0); button.titleLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0); button.imageView.transform = CGA

iOS开发中使用UIWebView 屏蔽 alert警告框_IOS

 如果是网页内容里面的alert,我们可以等网页加载完毕,也就是在webViewDidFinishLoad中执行下面的js代码,就可以屏蔽alert了 [myWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"]; 但上面的方法对于网页onLoad事件里面的alert就不起作用了 解决方法就是给UIWebView添加一个类别: 给工程添加JavaScriptAlert.h @interface UIWe

iOS开发 全机型适配解决方法_IOS

最近做项目,对于IPhone 手机机型适配很是头疼,所以整理下网上资料,记录下来,也许能帮助到正看文章的你, 今天打算跟大家聊聊最近研究的全机型适配思路. 当前我们需要适配的iPhone机型有4s.5s.6s.6Plus四种机型.它们的尺寸分别是  iphone4s {320, 480}                           960*640  iphone5 5s {320, 568}                       1136*640  iphone6 6s   {37

IOS开发之适配iOS10及Xcode8的注意点_IOS

下面给大家介绍下iOS10的适配及Xcode8使用上的一些注意点,一起看看! 一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automatically manage signing(Ps.但是在beat2版本我用的时候,完全不可以,GM版本竟然神奇的又好了.) 下面我来说说可能会出现的问题: 1.Xcode未设置开发者账号情况下的截图 解决办法是:大家在Xcode的偏好设置中,添加苹果账号,即可. 2.设备机器未添加进