我有一个很好的AudioKit链(AudioKit 4.5.6,IOS 12),支持播放和录制,并可以平滑地过渡到背景中和从背景中移出。我喜欢它,因为AudioKit很好地处理了类别,会话和路由更改。
我需要完成的最后一步是让它工作起来,但是我还没有做到。我可以播放背景音频,但是不会闪屏。作为参考,如果有人可以使用AudioKit录音机示例(https://github.com/AudioKit/AudioKit/tree/master/Examples/iOS/Recorder)来进行闪避,那将给我足够的帮助。作为参考,下面是该示例中的链的外观(为清晰起见,只删除了几行):
do {
try AKSettings.setSession(category: .playAndRecord, with: .allowBluetoothA2DP)
} catch {
AKLog("Could not set session category.")
}
AKSettings.defaultToSpeaker = true
// Patching
let monoToStereo = AKStereoFieldLimiter(mic, amount: 1)
micMixer = AKMixer(monoToStereo)
micBooster = AKBooster(micMixer)
// Will set the level of microphone monitoring
micBooster.gain = 0
recorder = try? AKNodeRecorder(node: micMixer)
if let file = recorder.audioFile {
player = AKPlayer(audioFile: file)
}
moogLadder = AKMoogLadder(player)
mainMixer = AKMixer(moogLadder, micBooster)
AudioKit.output = mainMixer
顺便说一句,即使Apple表示已接受,但我通过实验发现.duckOthers选项仅在.playback(和.ambient)模式下起作用,而在.playAndRecord模式下不起作用。