简体   繁体   中英

Switch Audio Between Speaker, Built in mic, Bluetooth or No Audio

I am working on a Video/Audio Call App where i need to provide four options related to the Audio Output:

Speaker, Built in mic, Any BLE Device supporting audio, No Audio output

Below functions i have used:

static func setBuiltInMic() {
        let outputs = audioSession.availableInputs
        for output in outputs! {
            if output.portType.rawValue == AVAudioSession.Port.builtInMic.rawValue {
                do {
                    try audioSession.setPreferredInput(output)
                } catch let error {
                    print("Setting Built in Mic Port: \(error.localizedDescription)")
                }
            }
        }
    }
 static func setAndCheckBLEAudioPort() -> Bool {
        let outputs = audioSession.availableInputs
        for output in outputs! {
            if output.portType.rawValue == AVAudioSession.Port.bluetoothHFP.rawValue {
                do {
                    try audioSession.setPreferredInput(output)
                    return true
                } catch let error {
                    print("Setting BLE Port: \(error.localizedDescription)")
                    return false
                }
            }
        }
        return false
    }
static func setupAudioSession(isSpeakerEnabled: Bool) {
        do {
            try audioSession.setCategory(.playAndRecord)
            try audioSession.setMode(.voiceChat)
            try audioSession.overrideOutputAudioPort(isSpeakerEnabled ? .speaker : .none)
            try audioSession.setActive(true, options: [])
        } catch let error as NSError {
            print("Fail: \(error.localizedDescription)")
        }
    }

But this doesn't work Audio keeps coming from different source like speaker even if i try to mute it using setupAudioSession

Anyone has an idea or reference for me to look into it?

该代码运行良好,这是在 Twilio 之前用于音频和视频通话的第三方库的问题。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM