如何使用AVFoundation在audioinput源(蓝牙,内置麦克风)之间切换

目前,我在内置麦克风和蓝牙麦克风iOS8之间切换audioinput源时遇到了麻烦

我试图find在线解决scheme,但没有得到:(

任何人,请告诉我适当的方式来实现。

期待您的帮助!

我有这个代码。

bluetoothInput只是蓝牙麦克风和普通麦克风之间切换的布尔值。

-(void) changeBluetoothInput{ if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { if(self.bluetoothInput){ //[[AVAudioSession sharedInstance] setActive:NO error:nil]; [[AVAudioSession sharedInstance] setActive:YES error:nil]; AVAudioSessionPortDescription* _bluetoothPort = [self bluetoothAudioDevice]; [[AVAudioSession sharedInstance] setPreferredInput:_bluetoothPort error:nil]; }else{ //[[AVAudioSession sharedInstance] setActive:NO error:nil]; //[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; [[AVAudioSession sharedInstance] setActive:YES error:nil]; AVAudioSessionPortDescription* _bluetoothPort = [self normalAudioDevice]; [[AVAudioSession sharedInstance] setPreferredInput:_bluetoothPort error:nil]; } } 

}

 - (AVAudioSessionPortDescription*)bluetoothAudioDevice { NSArray* bluetoothRoutes = @[AVAudioSessionPortBluetoothA2DP, AVAudioSessionPortBluetoothLE, AVAudioSessionPortBluetoothHFP]; return [self audioDeviceFromTypes:bluetoothRoutes]; } - (AVAudioSessionPortDescription*)normalAudioDevice { NSArray* bluetoothRoutes = @[AVAudioSessionPortBuiltInMic]; return [self audioDeviceFromTypes:bluetoothRoutes]; } - (AVAudioSessionPortDescription*)audioDeviceFromTypes:(NSArray*)types { NSArray* routes = [[AVAudioSession sharedInstance] availableInputs]; for (AVAudioSessionPortDescription* route in routes) { if ([types containsObject:route.portType]) { return route; } } return nil; }