iOS APP语音通话过程中蓝牙耳机切换听筒或扬声器
最近在基于sip 写语音通话功能,app需要兼容蓝牙耳机,中间出现过好多莫名其妙的问题 ,这是研究过程中踩过的坑
1、实时通话,需要设置Category
为AVAudioSessionCategoryPlayAndRecord
,这个不要改变,否则会出现各种没声音的问题。
2、适配蓝牙耳机的时候,不需要专门修改options
为AVAudioSessionCategoryOptionAllowBluetooth
蓝牙状态下 切换到听筒、扬声器、切回
切换听筒!!
NSArray* builtinRoutes = @[AVAudioSessionPortBuiltInMic];
NSArray* routes = [[AVAudioSession sharedInstance] availableInputs];
AVAudioSessionPortDescription* builtinPort;
for (AVAudioSessionPortDescription* route in routes){
if ([builtinRoutes containsObject:route.portType])
{
builtinPort = route;
}
}
[[AVAudioSession sharedInstance] setPreferredInput:builtinPort error:nil];
切换扬声器!!
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
切换回蓝牙!!!
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
感谢原文:https://blog.csdn.net/u014274590/article/details/81098135