打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
iOS 录音并播放
iso录音和播放 需要导入AVFoundation.framework



 

#import<UIKit/UIKit.h>

#import<AVFoundation/AVFoundation.h>//注意导入引用库

@interface testViewController :UIViewController<</span>AVAudioRecorderDelegate>

{


    NSURL *tmpFile;

    AVAudioRecorder *recorder;

    BOOL recording;

    AVAudioPlayer *audioPlayer;

    UIButton*LuBut;


}

-(void)setlable:(id)inder;

-(void)jian;

-(void)biaoqing;

======================================

创建两个按钮 一个录音 一个播放

        LuBut=[UIButton buttonWithType:UIButtonTypeRoundedRect];

       [LuButsetTitle:@"录音"forState:UIControlStateNormal];

       [bgImgViewaddSubview:LuBut];

       [LuBut addTarget:selfaction:@selector(luyin) forControlEvents:UIControlEventTouchUpInside];

       LuBut.frame=CGRectMake(30, 290, 60, 20);

       

       UIButton*BOBut=[UIButton buttonWithType:UIButtonTypeRoundedRect];

       [BOBut setFrame:CGRectMake(190, 290, 60, 20)];

       [BOButsetTitle:@"播放" forState:UIControlStateNormal];

       [BOButaddTarget:self action:@selector(bofang) forControlEvents:UIControlEventTouchUpInside];

       [bgImgViewaddSubview:BOBut];

====================================================================


//录音后 他会在你的项目目录的temp文件夹里面 创建一个wangshuo.caf 文件 重复录制  他会覆盖上一个,如需多个录音文件名称可以设置不同名称!


 

-(void)luyin{

   AVAudioSession * audioSession =[AVAudioSession sharedInstance]; if (!recording) {

       recording = YES;

       [audioSessionsetCategory:AVAudioSessionCategoryRecord error:nil];

       [audioSession setActive:YES error:nil];

       [LuBut setTitle:@"停止"forState:UIControlStateNormal];

       

       NSDictionary*setting = [[NSDictionaryalloc] initWithObjectsAndKeys: [NSNumber numberWithFloat: 44100.0],AVSampleRateKey, [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey, [NSNumber numberWithInt:16],AVLinearPCMBitDepthKey, [NSNumber numberWithInt: 2],AVNumberOfChannelsKey,[NSNumber numberWithBool:NO],AVLinearPCMIsBigEndianKey, [NSNumber numberWithBool:NO],AVLinearPCMIsFloatKey,nil];//然后直接把文件保存成.wav就好了

       tmpFile =[NSURLfileURLWithPath:

               [NSTemporaryDirectory()stringByAppendingPathComponent:

                 [NSString stringWithFormat: @"%@.%@",

                 @"wangshuo",

                 @"caf"]]];

       recorder = [[AVAudioRecorder alloc] initWithURL:tmpFile settings:setting error:nil];

       [recorder setDelegate:self];

       [recorder prepareToRecord];

       [recorder record];

    }else {

       recording = NO;

       [audioSession setActive:NO error:nil];

       [recorder stop];

       [LuBut setTitle:@"录音"forState:UIControlStateNormal];

    }


}

//播放音频

-(void)bofang{

   NSError *error;

   audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:tmpFile

                                             error:&error];

    

   audioPlayer.volume=1;

   if (error) {

       NSLog(@"error:%@",[error description]);

       return;

    }

   //准备播放

   [audioPlayerprepareToPlay];

   //播放

   [audioPlayer play];

}


你也可以设置录音动态录音大小 需要定时器 不断刷新当前的音量 这个算法 录音的音量算法有点小问题!不够灵敏!后期再学习!

  //设置定时检测

   timer= [NSTimerscheduledTimerWithTimeInterval:0target:self selector:@selector(detectionVoice) userInfo:nilrepeats:YES];

recorder=== AVAudioRecorder;

 

- (void)detectionVoice

{

   [recorderupdateMeters];//刷新音量数据

   //获取音量的平均值 [recorder averagePowerForChannel:0];

   //音量的最大值 [recorder peakPowerForChannel:0];

    

   double lowPassResults =pow(10, (0.05 * [recorder peakPowerForChannel:0]));

   NSLog(@"%lf",lowPassResults);

   //最大50 0

   //图片-》大

   if (0<lowPassResults<=0.06){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_01.png"]];

   }else if (0.06<lowPassResults<=0.13){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_02.png"]];

   }else if (0.13<lowPassResults<=0.20){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_03.png"]];

   }else if (0.20<lowPassResults<=0.27){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_04.png"]];

   }else if (0.27<lowPassResults<=0.34){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_05.png"]];

   }else if (0.34<lowPassResults<=0.41){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_06.png"]];

   }else if (0.41<lowPassResults<=0.48){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_07.png"]];

   }else if (0.48<lowPassResults<=0.55){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_08.png"]];

   }else if (0.55<lowPassResults<=0.62){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_09.png"]];

   }else if (0.62<lowPassResults<=0.69){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_10.png"]];

   }else if (0.69<lowPassResults<=0.76){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_11.png"]];

   }else if (0.76<lowPassResults<=0.83){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_12.png"]];

   }else if (0.83<lowPassResults<=0.9){

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_13.png"]];

   }else {

       [self.imageView setImage:[UIImage imageNamed:@"record_animate_14.png"]];

    }

}




本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
iOS 实现复选框 checkbox
iOS开发之监听网络连接,改变,断开
iOS如何自定义UISlider
iOS viewController添加导航条添加跳转以及特效
IOS
IOS UIImageView
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服