天天看點

AVAudioSessionCategory的選擇

AVAudioSessionCategoryAmbient 或 kAudioSessionCategory_AmbientSound
——用于非以語音為主的應用,使用這個category的應用會随着靜音鍵和螢幕關閉而靜音。而且不會中止其他應用播放聲音,能夠和其他自帶應用如iPod,safari等同一時候播放聲音。      

注意:該Category無法在背景播放聲音AVAudioSessionCategorySoloAmbient 或 kAudioSessionCategory_SoloAmbientSound

——相似于AVAudioSessionCategoryAmbient 不同之處在于它會中止其他應用播放聲音。 這個category為預設category。該Category無法在背景播放聲音

AVAudioSessionCategoryPlayback 或 kAudioSessionCategory_MediaPlayback

——用于以語音為主的應用,使用這個category的應用不會随着靜音鍵和螢幕關閉而靜音。

可在背景播放聲音AVAudioSessionCategoryRecord 或 kAudioSessionCategory_RecordAudio

———用于須要錄音的應用,設定該category後。除了來電鈴聲,鬧鐘或月曆提醒之外的其他系統聲音都不會被播放。該Category僅僅提供單純錄音功能。

AVAudioSessionCategoryPlayAndRecord 或 kAudioSessionCategory_PlayAndRecord

——用于既須要播放聲音又須要錄音的應用,語音聊天應用(如微信)應該使用這個category。該Category提供錄音和播放功能。

假設你的應用須要用到iPhone上的聽筒。該category是你唯一的選擇,在該Category下聲音的預設出口為聽筒(在沒有外接裝置的情況下)。注意:并非一個應用僅僅能使用一個category,程式應該依據實際須要來切換設定不同的category,舉個樣例,錄音的時候,須要設定為AVAudioSessionCategoryRecord。當錄音結束時。應依據程式須要更改category為AVAudioSessionCategoryAmbient。AVAudioSessionCategorySoloAmbient或AVAudioSessionCategoryPlayback中的一種。<pre name="code" class="objc">設定Category

NSError *setCategoryError = nil;  
BOOL success = [[AVAudioSession sharedInstance]  
                setCategory: AVAudioSessionCategoryAmbient  
                error: &setCategoryError];  
  
if (!success) { /* handle the error in setCategoryError */ }