[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
AVAudioSession的类别
- AVAudioSessionCategoryAmbient
混音播放,例如雨声、汽车引擎等,可与其他音乐一起播放
- AVAudioSessionCategorySoloAmbient
后台播放,其他音乐将被停止
- AVAudioSessionCategoryPlayback
独占音乐播放 (如:用于扬声器播放)
- AVAudioSessionCategoryRecord
录制音频
- AVAudioSessionCategoryPlayAndRecord
播放和录制音频 (如:用于听筒播放)
- AVAudioSessionCategoryAudioProcessing
使用硬件解码器处理音频,该音频会话使用期间,不能播放或录音
特殊场景
如:webrtc中视音频通话需要录音,但是声音可以从听筒传出或者话筒传出
typedef NS_ENUM(NSInteger,SDVideoCallMode){
SDVideoCallModeInitiator = 0,
SDVideoCallModeResponder = 1
};
@property (nonatomic,assign) SDMediaCallAudioPlayMode audioPlayMode;
-(void)setAudioPlayMode:(SDMediaCallAudioPlayMode)audioPlayMode{
_audioPlayMode = audioPlayMode;
// 录音+扬声器播放
if (_audioPlayMode == SDMediaCallAudioPlayModeLoudSpeaker) {
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
}
// 录音+听筒播放
else{
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
}
//[[AVAudioSession sharedInstance] setActive:YES error:nil];
}