Mic*_*uan 5 audio bluetooth ios avaudiosession
我正在做一个关于视频和音频聊天的项目。音频输出有很多种类型,苹果在开发文档中列出了:
/* output port types */
NSString *const AVAudioSessionPortLineOut;
NSString *const AVAudioSessionPortHeadphones;
NSString *const AVAudioSessionPortBuiltInReceiver;
NSString *const AVAudioSessionPortBluetoothA2DP;
NSString *const AVAudioSessionPortBuiltInSpeaker;
NSString *const AVAudioSessionPortHDMI;
NSString *const AVAudioSessionPortAirPlay;
NSString *const AVAudioSessionPortBluetoothLE;
/* port types that refer to either input or output */
NSString *const AVAudioSessionPortBluetoothHFP;
NSString *const AVAudioSessionPortUSBAudio;
NSString *const AVAudioSessionPortCarAudio;
Run Code Online (Sandbox Code Playgroud)
如果现在我找到三种音频输出类型:iPhone扬声器、iPhone内置扬声器和蓝牙设备,如何切换彼此的输出?
我使用下面的代码将音频输出从蓝牙设备更改为扬声器。它有效:
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码将音频从其他类型更改为蓝牙,它也有效:
NSArray *availInputs = [[AVAudioSession sharedInstance] availableInputs];
int count = [availInputs count];
for (int i = 0; i < count; i++)
{
AVAudioSessionPortDescription* inPort = [availInputs objectAtIndex:i];
if ([self isBluetoothDevice:inPort.portType])
{
NSError *setPreferredErr = nil;
[[AVAudioSession sharedInstance] setPreferredInput:inPort error:&setPreferredErr];
if(setPreferredErr)
NSLog (@"%@", setPreferredErr);
}
}
Run Code Online (Sandbox Code Playgroud)
但我无法将输出从蓝牙更改为 iPhone 内置扬声器。从蓝牙换成耳机怎么样?谢谢。