iOS - 从手机,手机扬声器,耳机或蓝牙设备切换音频输出

时间:2018-02-09 08:07:45

标签: ios audio bluetooth avaudiosession

我正在开展一个关于视频和音频聊天的项目。音频输出有很多类型,就像开发文档中的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内置扬声器。   如何从蓝牙转换到耳机?   感谢。

0 个答案:

没有答案