AudioKit 4.9.3 iOS 11 +
Я работаю над проектом, в котором пользователь записывает на устройство с помощью микрофона и продолжает запись, даже если приложение находится в фоновом режиме. Это работает нормально, но при получении телефонного звонка я получаю ошибку AudioKit. Я предполагаю, что это как-то связано с тем, что телефон захватывает mi c или что-то в этом роде. вот ошибка:
[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
]
Что я могу сделать, чтобы обеспечить правильную запись даже при получении телефонного звонка? Ошибка происходит, как только вы получаете звонок - хотите ли вы ответить на него или отклонить.
Есть мысли?