AudioKit 4.9.3
iOS 11以上

我正在一个项目中,用户正在使用麦克风在设备上进行录音,即使该应用程序在后台,该项目也会继续进行录音。这可以正常工作,但是在接到电话时出现AudioKit错误。我认为这与手机接管麦克风有关。这是错误:

[avae] AVAEInternal.h:109
[AVAudioEngineGraph.mm:1544:Start:(err = PerformCommand(* ioNode,
kAUStartIO,NULL,0)):错误561017449
AudioKit + StartStop.swift:restartEngineAfterRouteChange(_ :):198:错误
更改路线后重新启动引擎

基本上,到那一点为止我记录的所有内容都丢失了。

这是我设置的AudioKit代码:

func configureAudioKit() {
        AKSettings.audioInputEnabled = true
        AKSettings.defaultToSpeaker = true
        do {
            try try audioSession.setCategory((AVAudioSession.Category.playAndRecord), options: AVAudioSession.CategoryOptions.mixWithOthers)
            try audioSession.setActive(true)
            audioSession.requestRecordPermission({ allowed in
                DispatchQueue.main.async {
                    if allowed {
                        print("Audio recording session allowed")
                        self.configureAudioKitSession()
                    } else {
                        print("Audio recoding session not allowed")
                    }
                }
            })
        } catch let error{
            print("Audio recoding session not allowed: \(error.localizedDescription)")
        }
    }


func configureAudioKitSession() {
        isMicPresent = AVAudioSession.sharedInstance().isInputAvailable
        if !isMicPresent {
            return
        }
        print("mic present and configuring audio session")
        mic = AKMicrophone()
        do{
        let _ = try AKNodeRecorder(node: mic)
        let recorderGain = AKBooster(mic, gain: 0)
        AudioKit.output = recorderGain
        //try AudioKit.start()
        }
        catch let error{
            print("configure audioKit error: ", error)
        }
}

当点击记录按钮代码时:
    do {
         audioRecorder = try AVAudioRecorder(url: actualRecordingPath, settings: audioSettings)
         audioRecorder?.record()
         //print("Recording: \(isRecording)")
         do{
           try AudioKit.start()
          }
          catch let error{
            print("Cannot start AudioKit", error.localizedDescription)
          }
}

当前音频设置:
private let audioSettings = [
        AVFormatIDKey : Int(kAudioFormatMPEG4AAC),
        AVSampleRateKey : 44100,
        AVNumberOfChannelsKey : 2,
        AVEncoderAudioQualityKey : AVAudioQuality.medium.rawValue
    ]

如何确保即使接听电话也能获得正确的录音?接听电话后即会发生错误-无论您选择接听还是拒绝。

有什么想法吗?

最佳答案

我已经完成了这方面的工作,恐怕在通话或VOIP通话过程中您无法使用麦克风。

这是出于不言而喻的原因,iOS强制执行的一项基本隐私措施。

关于ios - iOS-接听电话时AudioKit崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59899759/

10-14 23:16