在前篇實作錄音功能中使用到了 AVAudioSession 這個屬於 AVFoundation 架構下的功能,本篇來談談AVAudioSession 的功用為何。
Speaker 及 Microphone 這兩者作為平台上(iphone、ipad、mac)唯一的收發聲硬體元件,當多個 app 都需要使用時該怎麼協調讓彼此不會產生衝突?
e.g.
當開啟靜音模式時又想播放音樂、播放音樂時也可收到其他 app 的通知警告音
如上圖所示,OS 端即是透過 AVAudioSession 來協調眾多 app 對 Speaker 及 Microphone 的使用時機。
AVAudioSession 使用方式如下,先透過 setCategory() 將 app 對於 Speaker 及 Microphone 所需之使用方式設定好後,在使用 setActive() 來啟用設定。
recordingSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
recordingSession.setActive(true)
在錄音時需改變設定為 AVAudioSessionCategoryPlayAndRecord 的原因是所有的 apple OS 的預設行為是不允許 app 來錄音,因此若是要使用錄音這功能時必須自行改變。預設行為可參考 Audio Session Programming Guide。
Reference
Audio Session Programming Guide
Audio Session specification