我正在开展一个关于视频和音频聊天的项目。音频输出有很多类型,就像开发文档中的Apple列表一样:
/* 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;
如果现在我找到三种音频输出类型:iPhone扬声器,iPhone内置扬声器和蓝牙设备,如何相互切换输出?
我使用下面的代码将蓝牙设备的音频输出更改为扬声器。它有效:
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
我使用下面的代码将音频从其他类型更改为蓝牙,它也有效:
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);
}
}
但我无法将蓝牙输出改为iPhone内置扬声器。 如何从蓝牙转换到耳机? 感谢。