要看AVAudioSession底层API解释的可以看我另一篇文章AVAudioSession。
这篇文章主要记载我使用音频功能期间的小结:
1、音频如果需要后台录制或者播放功能需要勾选BackgroundMode中的第一项
2、info中要添加隐私权限获取key:
Privacy - Microphone Usage Description 麦克风权限
3、通过AVAuthorizationStatus类获取麦克风或摄像头的授权状态,若未授权可以使用requestAccessForMediaType:方法向用户请求设备权限。
4、获得用户授权后,设置AVAudioSession:
1)当前audioSession处于active时,其他active状态下的audioSession中断;当前audioSession解除active时,其他audioSession不恢复。
[audioSession setActive:YES error:nil];
2)当前audioSession处于active时,其他active状态下的audioSession中断;当前audioSession解除active时,其他audioSession中断结束。
[audioSession setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
5、根据需求设置AVAudioSession的category、mode、option(AVAudioSession)
当设备有多个外接音频设备时,AVAudioSession将遵循last-in wins的原则来选择外接设备,即音频将导向最终的外接设备。
当没有外接音频设备时,音频默认从内置扬声器播放,但category为AVAudioSessionCategoryPlayAndRecord时,听筒为默认输出设备。
在AVAudioSessionCategoryPlayAndRecord情况下,如果想更改默认输出设备,可以通过提供MPVolumeView让用户切换输出设备;或者通过调用overrideOutputAudioPort:方法来使用AVAudioSessionPortOverrideSpeaker切换到扬声器,也可以通过修改CategoryOption为AVAudioSessionCategoryOptionDefaultToSpeaker。
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
[audioSession setCategory:AVAudioSessionCategorySoloAmbient withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];