我正在使用AVAudioSession来侦听语音输入。它适用于有线耳机,但它不适用于连接的蓝牙设备。以下是我使用的设置输入蓝牙话筒代码AVAudioSession不识别来自蓝牙设备的音频
func setupSessionForRecording() { let audioSession = AVAudioSession.sharedInstance() do { try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: [.allowBluetooth]) } catch let error as NSError { debugPrint("Error in listening "+error.localizedDescription) } var inputsPriority: [(type: String, input: AVAudioSessionPortDescription?)] = [ (AVAudioSessionPortLineIn, nil), (AVAudioSessionPortHeadsetMic, nil), (AVAudioSessionPortBluetoothHFP, nil), (AVAudioSessionPortUSBAudio, nil), (AVAudioSessionPortCarAudio, nil), (AVAudioSessionPortBuiltInMic, nil), ] for availableInput in audioSession.availableInputs! { guard let index = inputsPriority.index(where: { $0.type == availableInput.portType }) else { continue } inputsPriority[index].input = availableInput } guard let input = inputsPriority.filter({ $0.input != nil }).first?.input else { fatalError("No Available Ports For Recording") } do { try audioSession.setPreferredInput(input) try audioSession.setMode(AVAudioSessionModeMeasurement) try audioSession.setActive(true, with: .notifyOthersOnDeactivation) try audioSession.setPreferredIOBufferDuration(10) } catch { fatalError("Error Setting Up Audio Session") } }
此代码将停止服用从设备麦克风输入和我也得到声音在蓝牙耳机,它已准备好倾听,但它不”从设备中选择任何输入。
此外,
当我尝试播放任何音频到蓝牙耳机它不工作。下面是代码播放音频
do { let output = AVAudioSession.sharedInstance().currentRoute.outputs[0].portType if output == "Receiver" || output == "Speaker"{ try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker) } else{ try AVAudioSession.sharedInstance().overrideOutputAudioPort(.none) } print("Voice Out \(output)") } catch let error as NSError { print("audioSession error: \(error.localizedDescription)") os_log("Error during changing the current audio route: %@" , log: PollyVoiceViewController.log, type: .error, error) } catch { os_log("Unknown error during changing the current audio route", log: PollyVoiceViewController.log, type: .error) } do { let soundData = try Data(contentsOf: url as URL) self.audioPlayer = try AVAudioPlayer(data: soundData) self.audioPlayer?.prepareToPlay() self.audioPlayer?.volume = 3.0 self.audioPlayer?.delegate = self self.audioPlayer?.play() } catch let error as NSError { print("Error getting the audio file"+error.description) }
嗨,你解决了吗? –