ios开发——实用技术篇Swift篇&录音

录音

  1     // MARK: - 录音
  2     /*----- 录音 ------*/
  3
  4     var recorder:AVAudioRecorder?   //录音器
  5     var player:AVAudioPlayer?   //播放器
  6     var recorderSettingsDic:[NSObject : AnyObject]?   //录音器设置参数数组
  7     var volumeTimer:NSTimer!//定时器线程, 刷新音量
  8     var aacPath:String? //录音存储路径
  9
 10      @IBOutlet var soundLodingImageView:UIImageView!//录音音量显示视图
 11
 12
 13     //按下录音
 14     @IBAction func downAction()
 15     {
 16         var error:NSError?
 17
 18         //初始化录音器
 19         recorder = AVAudioRecorder(URL: NSURL(string: aacPath!), settings: recorderSettingsDic, error:  &error)
 20
 21
 22         if ((recorder) != nil) {
 23
 24             //开启仪表计数功能
 25             recorder!.meteringEnabled = true;
 26
 27             //准备录音
 28             recorder!.prepareToRecord()
 29
 30             //开始录音
 31             recorder!.record()
 32
 33             //启动定时器 定时更新录音音量
 34             volumeTimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "levelTimer", userInfo: nil, repeats: true)
 35         }
 36
 37     }
 38
 39
 40      //松开 结束录音
 41     @IBAction func upAction()
 42     {
 43         //停止录音
 44         recorder?.stop()
 45
 46         //录制器释放
 47         recorder = nil
 48
 49         //暂停定时器
 50         volumeTimer.invalidate()
 51         volumeTimer = nil
 52
 53         //界面音量归0现实
 54         soundLodingImageView.image = UIImage(named: "RecordingSignal001")
 55     }
 56
 57     //播放录制的声音
 58     @IBAction func playAction()
 59     {
 60         var playerError:NSError?
 61
 62         //播放
 63         player = nil;
 64         player = AVAudioPlayer(contentsOfURL: NSURL(string: aacPath!), error: &playerError)
 65
 66         if (player == nil)
 67         {
 68             println("ERror creating player: \(playerError?.description)")
 69         }else{
 70             player?.play()
 71         }
 72     }
 73
 74
 75     //定时器方法--检测录音音量
 76     func levelTimer()
 77     {
 78         recorder!.updateMeters()//刷新音量数据
 79
 80         let averageV:Float = recorder!.averagePowerForChannel(0)//获取音量的平均值
 81
 82         let maxV:Float = recorder!.peakPowerForChannel(0)//获取音量的最大值
 83
 84         let lowPassResults:Double = pow(Double(10), Double(0.05 * maxV))
 85         println("\(lowPassResults)")
 86
 87
 88         if (lowPassResults>=0.8) {
 89             soundLodingImageView.image = UIImage(named: "RecordingSignal8.png")
 90         }else if(lowPassResults>=0.7){
 91             soundLodingImageView.image = UIImage(named: "RecordingSignal7.png")
 92         }else if(lowPassResults>=0.6){
 93             soundLodingImageView.image = UIImage(named: "RecordingSignal6.png")
 94         }else if(lowPassResults>=0.5){
 95             soundLodingImageView.image = UIImage(named: "RecordingSignal5.png")
 96         }else if(lowPassResults>=0.4){
 97             soundLodingImageView.image = UIImage(named: "RecordingSignal4.png")
 98         }else if(lowPassResults>=0.3){
 99             soundLodingImageView.image = UIImage(named: "RecordingSignal3.png")
100         }else if(lowPassResults>=0.2){
101             soundLodingImageView.image = UIImage(named: "RecordingSignal2.png")
102         }else if(lowPassResults>=0.1){
103             soundLodingImageView.image = UIImage(named: "RecordingSignal1.png")
104         }else{
105             soundLodingImageView.image = UIImage(named: "RecordingSignal1.png")
106         }
107
108     }

实现:

 1         titleLabel.text = titleString
 2
 3         let mp3Path = NSBundle.mainBundle().pathForResource("xiaoPingGuo", ofType: "mp3")
 4         let fileUrl = NSURL.fileURLWithPath(mp3Path!)
 5
 6         audioPlayer = AVAudioPlayer(contentsOfURL: fileUrl, error: nil)
 7         audioPlayer.prepareToPlay()
 8
 9
10         //以下录音使用
11
12         //初始化录音器
13         let session:AVAudioSession = AVAudioSession.sharedInstance()
14
15         //初始化一个NSError对象,失败的时候可以获取失败原因
16         var error:NSError?
17
18         //设置录音类型
19         session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: &error)
20
21         //设置支持后台
22         session.setActive(true, error: &error)
23
24         //获取Document目录
25 //        let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
26
27         //2015年5月2后修改
28         let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
29
30         //组合录音文件路径
31         aacPath = docDir + "/play.aac"
32
33         //初始化字典
34         recorderSettingsDic = Dictionary()
35
36         //字典添加设置参数
37         recorderSettingsDic!.updateValue(NSNumber(long: kAudioFormatMPEG4AAC), forKey: AVFormatIDKey)
38         recorderSettingsDic!.updateValue(NSNumber(long: 1000), forKey: AVSampleRateKey)
39         recorderSettingsDic!.updateValue(NSNumber(long: 2), forKey: AVNumberOfChannelsKey)
40         recorderSettingsDic!.updateValue(NSNumber(long: 8), forKey: AVLinearPCMBitDepthKey)
41         recorderSettingsDic!.updateValue(NSNumber(bool: false), forKey: AVLinearPCMIsBigEndianKey)
42         recorderSettingsDic!.updateValue(NSNumber(bool: false), forKey: AVLinearPCMIsFloatKey)
时间: 2024-10-10 16:24:20

ios开发——实用技术篇Swift篇&录音的相关文章

ios开发——实用技术篇Swift篇&地址薄、短信、邮件

1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 //新增联系人 8 @IBAction func addPeople () 9 { 10 //取得电话薄句柄 11 var error:Unmanaged<CFError>? 12 var addressBook: ABAddressBookRef? = AB

ios开发——实用技术篇Swift篇&amp;播放MP3

播放MP3 1 // MARK: - 播放MP3 2 /*----- mp3 ------*/ 3 //定时器- 4 func updateTime() 5 { 6 //获取音频播放器播放的进度,单位秒 7 var cuTime:Float = Float(audioPlayer.currentTime) 8 9 //更新进度条 10 jinDuSlider.value = cuTime 11 12 //获取总时间 13 var duTime:Float = Float(audioPlayer.

ios开发——实用技术篇Swift篇&amp;多点触摸与手势识别

多点触摸与手势识别 1 2 //点击事件 3 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") 4 self.view.addGestureRecognizer(atap) 5 atap.numberOfTapsRequired = 1 //单击次数 6 atap.numberOfTouchesRequired = 1 //手指个数 7 8 //拖动事件 9 var aPan = UIPanGesture

ios开发——实用技术篇Swift篇&amp;系统声音

系统声音 1 // MARK: - 系统声音 2 /*----- 系统声音 ------*/ 3 @IBAction func systemSound() 4 { 5 //建立的SystemSoundID对象 6 var soundID: SystemSoundID = 0 7 8 //获取声音文件地址 9 var path = NSBundle.mainBundle().pathForResource("SaoMa", ofType: "wav") 10 11 /

ios开发——实用技术篇Swift篇&amp;照片选择

照片选择 1 // MARK: - 选择照片 2 /*----- 选择照片 ------*/ 3 @IBAction func addImageButtonClick() 4 { 5 let actionSheet = UIActionSheet(title: "请选择", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: "从相

ios开发——实用技术篇Swift篇&amp;加速计和陀螺仪

加速计和陀螺仪 1 //返回按钮事件 2 @IBAction func backButtonClick() 3 { 4 self.navigationController?.popViewControllerAnimated(true) 5 } 6 7 8 @IBOutlet var xLabel:UILabel! 9 @IBOutlet var yLabel:UILabel! 10 @IBOutlet var zLabel:UILabel! 11 12 @IBOutlet var orient

ios开发——实用技术篇Swift篇&amp;视频

视频 1 // MARK: - 播放视频 2 /*----- 播放视频 ------*/ 3 4 5 func moviePlayerPreloadFinish(notification:NSNotification) 6 { 7 println("播放完毕") 8 } 9 10 //声明一个媒体播放器 11 var moviePlayer:MPMoviePlayerController? 12 13 @IBAction func playMV() 14 { 15 let filePa

ios开发——实用技术篇Swift篇&amp;拍照

拍照 1 // MARK: - 拍照 2 func fromPhotograph() 3 { 4 if UIImagePickerController.isSourceTypeAvailable(.Camera) 5 { 6 //创建图片控制器 7 let picker = UIImagePickerController() 8 9 //设置代理 10 picker.delegate = self 11 12 //设置来源 13 picker.sourceType = UIImagePicker

ios开发——实用技术篇OC篇&amp;iOS的主要框架

iOS的主要框架         阅读目录 Foundation框架为所有的应用程序提供基本系统服务 UIKit框架提供创建基于触摸用户界面的类 Core Data框架管着理应用程序数据模型 Core Graphics框架帮助你创建图形 Core Animation允许你创建高级的动画和虚拟效果 OpenGL ES 框架提供2D和3D绘图工具 将别的框架添加到工程里 本文是<Sunvey the Major Framworks>一文的翻译 框架是一个目录,这个目录包含了共享库,访问共享库里代码