AVAudioSessionCategory相關
AVAudioSessionCategoryAmbient
使用這個category的應用會隨着靜音鍵和屏幕關閉而靜音。並且不會中止其它應用播放聲音,可以和其它自帶應用如iPod,safari等同時播放聲音。注意:該Category無法在后台播放聲音,所以開啟應用打斷音樂程序播放音樂應該使用這個Category。
AVAudioSessionCategorySoloAmbient
類似於AVAudioSessionCategoryAmbient 不同之處在於它會中止其它應用播放聲音。 這個category為默認category。該Category無法在后台播放聲音
AVAudioSessionCategoryPlayback
使用這個category的應用不會隨着靜音鍵和屏幕關閉而靜音。可在后台播放聲音
AVAudioSessionCategoryRecord
用於需要錄音的應用,設置該category后,除了來電鈴聲,鬧鍾或日歷提醒之外的其它系統聲音都不會被播放。該Category只提供單純錄音功能。
AVAudioSessionCategoryPlayAndRecord
用於既需要播放聲音又需要錄音的應用,語音聊天應用(如微信)應該使用這個category。該Category提供錄音和播放功能。如果你的應用需要用到iPhone上的聽筒,該category是你唯一的選擇,在該Category下聲音的默認出口為聽筒(在沒有外接設備的情況下)。
AVAudioSessionCategoryOptions中的AVAudioSessionCategoryOptionMixWithOthers
設置這個選項在激活會話時不會打斷其他應用程序的音頻播放,在以下的選項中可用AVAudioSessionCategoryPlayback 、 AVAudioSessionCategoryPlayAndRecord 、 AVAudioSessionCategoryMultiRoute(ios6加入的多線路)
AVAudioSessionCategoryOptionDuckOthers
這個選項在激活會話時降低其他程序的音頻播放聲音,在以下的選項中可用AVAudioSessionCategoryPlayAndRecord、AVAudioSessionCategoryRecord
主要是體現當前音頻的重要性,比如說開車聽歌的時候,導航的聲音就屬於比較重要的或者是需要特別關注的就可以是用這個選項
AVAudioSessionCategoryOptionAllowBluetooth
允許可免提藍牙設備可使用輸入通道
AVAudioSessionCategoryOptionDefaultToSpeaker
設置這個選項在沒有其他通道的時候默認選擇內置揚聲器
AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWIthOthers(iOS9.0加入的)
當你的app偶爾的使用音頻播放(感覺和DuckOthers很像,文檔中提到這兩個是可以互換的)在以下的選項中可用AVAudioSessionCategoryPlayback 、 AVAudioSessionCategoryPlayAndRecord 、 AVAudioSessionCategoryMultiRoute
如果設置了這個選項,在關閉這個session時需要:
[myAudioSession setActive: NO with Options: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error: <#Your error object, or nil for testing#>];
這句代碼是為了確保執行當前session之前被打斷的正在播放的 audio app能都收到resume消息。
