gpt4 book ai didi

iOS - AudioKit 在接听电话时崩溃

转载 作者:行者123 更新时间:2023-12-02 19:10:32 30 4
gpt4 key购买 nike

音频套件 4.9.3iOS 11+

我正在开发一个项目,其中用户使用麦克风在设备上录音,并且即使应用程序位于后台,设备也会继续录音。这工作正常,但是当接到电话时我收到 AudioKit 错误。我认为这与手机接管麦克风或其他什么有关。这是错误:

[avae] AVAEInternal.h:109
[AVAudioEngineGraph.mm:1544:Start: (err = PerformCommand(*ioNode, kAUStartIO, NULL, 0)): error 561017449 AudioKit+StartStop.swift:restartEngineAfterRouteChange(_:):198:error restarting engine after route change

基本上我在那之前记录的所有内容都丢失了。

这是我设置的 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 - AudioKit 在接听电话时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59899759/

30 4 0
文章推荐: r - 为什么在quadprog中找不到 '.QP_qpgen2'?
文章推荐: assembly - 在汇编中反转字符串时遇到问题
文章推荐: redirect - 如何告诉nginx将网站的所有页面重定向到root?
文章推荐: angularjs - 使用 ng-options 添加空间到