为什么我需要声明一个AVAudioSession实例?

时间:2015-04-11 21:49:11

标签: ios swift avfoundation

@IBAction func recordAudio(sender: UIButton) {
recodingLabel.hidden = false
stopButton.hidden = false


let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

    let currentDateTime = NSDate()
    let formatter = NSDateFormatter()
    formatter.dateFormat = "ddMMyyyy-HHmmss"

    let recordingName = formatter.stringFromDate(currentDateTime)+".wav"

    let pathArray = [dirPath,recordingName]

    let filePath = NSURL.fileURLWithPathComponents(pathArray)
    //println(filePath)

  var recordSession = AVAudioSession.sharedInstance()
  recordSession.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil)

  audioRecorder = AVAudioRecorder(URL: filePath, settings: nil, error: nil)
  audioRecorder.delegate = self
  audioRecorder.meteringEnabled = true
  audioRecorder.record()

}

从上面的代码可以看出,我试图通过按下按钮来记录用户的音频,并且在下一个视图中我希望播放相同的背景。

我遇到的问题是以下代码块:

var recordSession = AVAudioSession.sharedInstance()
recordSession.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil)

为什么我需要声明上面的代码块?当我做出评论并运行应用程序时,没有任何区别。

以上代码来自Udacity课程

1 个答案:

答案 0 :(得分:2)

音频是设备上的共享资源。让系统了解您计划使用Audio做什么的原因是为了帮助它协调您的使用与其他正在发生的事情。例如,如果手机在录制过程中响铃,或者用户选择其他麦克风,您的应用会发生什么?这些和其他交互由全局AVAudioSession对象处理。