ios开发——实用技术篇Swift篇&录音
录音
// MARK: - 录音 /*----- 录音 ------*/ var recorder:AVAudioRecorder? //录音器 var player:AVAudioPlayer? //播放器 var recorderSettingsDic:[NSObject : AnyObject]? //录音器设置参数数组 var volumeTimer:NSTimer!//定时器线程, 刷新音量 var aacPath:String? //录音存储路径 @IBOutlet var soundLodingImageView:UIImageView!//录音音量显示视图 //按下录音 @IBAction func downAction() { var error:NSError? //初始化录音器 recorder = AVAudioRecorder(URL: NSURL(string: aacPath!), settings: recorderSettingsDic, error: &error) if ((recorder) != nil) { //开启仪表计数功能 recorder!.meteringEnabled = true; //准备录音 recorder!.prepareToRecord() //开始录音 recorder!.record() //启动定时器 定时更新录音音量 volumeTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "levelTimer", userInfo: nil, repeats: true) } } //松开 结束录音 @IBAction func upAction() { //停止录音 recorder?.stop() //录制器释放 recorder = nil //暂停定时器 volumeTimer.invalidate() volumeTimer = nil //界面音量归0现实 soundLodingImageView.image = UIImage(named: "RecordingSignal001") } //播放录制的声音 @IBAction func playAction() { var playerError:NSError? //播放 player = nil; player = AVAudioPlayer(contentsOfURL: NSURL(string: aacPath!), error: &playerError) if (player == nil) { println("ERror creating player: \(playerError?.description)") }else{ player?.play() } } //定时器方法--检测录音音量 func levelTimer() { recorder!.updateMeters()//刷新音量数据 let averageV:Float = recorder!.averagePowerForChannel()//获取音量的平均值 let maxV:Float = recorder!.peakPowerForChannel()//获取音量的最大值 let lowPassResults:Double = pow(Double(), Double(0.05 * maxV)) println("\(lowPassResults)") if (lowPassResults>=0.8) { soundLodingImageView.image = UIImage(named: "RecordingSignal8.png") }else if(lowPassResults>=0.7){ soundLodingImageView.image = UIImage(named: "RecordingSignal7.png") }else if(lowPassResults>=0.6){ soundLodingImageView.image = UIImage(named: "RecordingSignal6.png") }else if(lowPassResults>=0.5){ soundLodingImageView.image = UIImage(named: "RecordingSignal5.png") }else if(lowPassResults>=0.4){ soundLodingImageView.image = UIImage(named: "RecordingSignal4.png") }else if(lowPassResults>=0.3){ soundLodingImageView.image = UIImage(named: "RecordingSignal3.png") }else if(lowPassResults>=0.2){ soundLodingImageView.image = UIImage(named: "RecordingSignal2.png") }else if(lowPassResults>=0.1){ soundLodingImageView.image = UIImage(named: "RecordingSignal1.png") }else{ soundLodingImageView.image = UIImage(named: "RecordingSignal1.png") } }
实现:
titleLabel.text = titleString let mp3Path = NSBundle.mainBundle().pathForResource("xiaoPingGuo", ofType: "mp3") let fileUrl = NSURL.fileURLWithPath(mp3Path!) audioPlayer = AVAudioPlayer(contentsOfURL: fileUrl, error: nil) audioPlayer.prepareToPlay() //以下录音使用 //初始化录音器 let session:AVAudioSession = AVAudioSession.sharedInstance() //初始化一个NSError对象,失败的时候可以获取失败原因 var error:NSError? //设置录音类型 session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: &error) //设置支持后台 session.setActive(true, error: &error) //获取Document目录 // let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String //2015年5月2后修改 let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, ] as! String //组合录音文件路径 aacPath = docDir + "/play.aac" //初始化字典 recorderSettingsDic = Dictionary() //字典添加设置参数 recorderSettingsDic!.updateValue(NSNumber(long: kAudioFormatMPEG4AAC), forKey: AVFormatIDKey) recorderSettingsDic!.updateValue(NSNumber(), forKey: AVSampleRateKey) recorderSettingsDic!.updateValue(NSNumber(), forKey: AVNumberOfChannelsKey) recorderSettingsDic!.updateValue(NSNumber(), forKey: AVLinearPCMBitDepthKey) recorderSettingsDic!.updateValue(NSNumber(bool: false), forKey: AVLinearPCMIsBigEndianKey) recorderSettingsDic!.updateValue(NSNumber(bool: false), forKey: AVLinearPCMIsFloatKey)
ios开发——实用技术篇Swift篇&录音的更多相关文章
- ios开发——实用技术篇Swift篇&播放MP3
播放MP3 // MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime ...
- ios开发——实用技术篇Swift篇&地址薄、短信、邮件
//返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...
- ios开发——实用技术篇Swift篇&拍照
拍照 // MARK: - 拍照 func fromPhotograph() { if UIImagePickerController.isSourceTypeAvailable(.Camera) { ...
- ios开发——实用技术篇Swift篇&照片选择
照片选择 // MARK: - 选择照片 /*----- 选择照片 ------*/ @IBAction func addImageButtonClick() { let actionSheet = ...
- ios开发——实用技术篇Swift篇&系统声音
系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...
- ios开发——实用技术篇Swift篇&视频
视频 // MARK: - 播放视频 /*----- 播放视频 ------*/ func moviePlayerPreloadFinish(notification:NSNotification) ...
- ios开发——实用技术篇Swift篇&加速计和陀螺仪
加速计和陀螺仪 //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnim ...
- ios开发——实用技术篇Swift篇&多点触摸与手势识别
多点触摸与手势识别 //点击事件 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") self.vi ...
- ios开发——实用技术篇OC篇&iOS的主要框架
iOS的主要框架 阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core ...
随机推荐
- Think Python Glossary
一.The way of the program problem solving: The process of formulating a problem, finding a solution, a ...
- PHP 实现下载文件的方法
方法一: header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); ...
- ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
在平时编码中,经常要把日期转换成各种各样的形式输出或保持,今天专门做了个测试,发现DateTime的ToString()方法居然有这么多的表现形式,和大家一起分享. DateTime time=Dat ...
- 一行命令实现Android自动关机
前几天晚上失眠,实在睡不着觉,于是想用Nexus7听一听小野丽莎的歌,在安静祥和之中睡去(怎么感觉有点...)但是不能让平板总是这么循环播放吧(屋里吐槽Google Play Music),所以在平板 ...
- nodejs写的一个网页爬虫例子(坏链率)
因为工作需要,用nodejs写了个简单的爬虫例子,之前也没用过nodejs,连搭环境加写大概用了5天左右,so...要多简陋有多简陋,放这里给以后的自己看~~ 整体需求是:给一个有效的URL地址,返回 ...
- Linux中MySQL5.5解压版普通用户安装
#查看本机mysql 安装路径 [hadoop@SY-0134 toolkit]$ rpm -qa|grep -i mysql [hadoop@SY-0134 toolkit]$ whereis my ...
- (转载)Java之外观模式(Facade Pattern)
1.概念 为子系统中的一组接口提供一个统一接口.Facade模式定义了一个高层接口,这个接口使得这子系统更容易使用. 2.UML 3.代码 下面是一个具体案例的代码: package facade; ...
- Android实例-全屏显示程序(XE10+小米2)(无图)
方法一:选中窗体->BorderStyle改为“None” 方法二: 1.下载第三方控件QAndroid.Shell 2.执行FShell.Execute('su -c mount -o rem ...
- FIREDAC调用中间件远程方法查询数据示例
服务端使用FDQUERY查询数据并返回TDATASET: function TServerMethods1.GetData(var sql: string): tdataset;begin qry.C ...
- AVCaptureDevice
转载自:http://blog.csdn.net/andy_jiangbin/article/details/19820717 0.媒体采集的几个东西.这里所需要明白的是,在这个流程中,这里会存在 ...