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 */ }