使用CallKit更改扬声器和来自扬声器

时间:2017-06-07 18:14:57

标签: ios swift xcode avaudiosession callkit

我正在创建一个仅执行外拨呼叫的CallKit应用程序。 我们正在做自己的界面,而不是使用内置的UI。 我需要在屏幕上放一个扬声器按钮,从扬声器/无扬声器模式切换。

我遵循了Apple的指南和示例CallKit代码和 它似乎运作良好。

我找不到有关如何切换到扬声器模式的信息。我正在使用以下功能来更改音频路由。 有没有人有这方面的经验?这可行吗?

func speaker(on: Bool) {
    let audioSession = AVAudioSession.sharedInstance()
    do {
        // not sure I need this ...
        try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
        if on {
            // does this trigger a change to the audio route?
            try audioSession.overrideOutputAudioPort(.speaker)
        } else {
            // is this how to switch back to the phone speaker?
            try audioSession.overrideOutputAudioPort(.none)
        }
    } catch {
        // Audio session change failure
        print("failed to change speaker phone")
    }
}

1 个答案:

答案 0 :(得分:0)

您需要在do块的末尾添加以下内容:audioSession.setActive(true)