我正在工作的音频录音。当应用程序运行在前台,我必须开始录音,并在那个时候去后台录音工作正常。
但我的问题是,如何开始录音时,我已经在后台,我的录音功能像这样发射:
我有一个带按钮的蓝牙LE设备和一个iOS应用程序。这两个设备是配对的(蓝牙LE设备和运行iOS应用程序的iPhone),iOS应用程序正在监听蓝牙LE设备上的事件,比如点击按钮。
现在,当用户点击蓝牙LE设备上的按钮时,iOS应用程序会捕获事件,即使应用程序在后台,我也能够运行代码,但我无法启动语音录制。
我已经启用了Background Modes
:
下面是我的音频录制代码:
func startRecording() {
DispatchQueue.global(qos: .background).asyncAfter(deadline: DispatchTime.now(), qos: .background) {
let audioFilename = self.getDocumentsDirectory().appendingPathComponent("recording.m4a")
print("record Audio \(audioFilename)")
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
self.audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
self.audioRecorder.delegate = self
self.audioRecorder.record()
} catch {
self.finishRecording(success: false)
}
}
}
我找不到合适的方法来做那件事,请给我建议合适的方法,先谢了。
2条答案
按热度按时间new9mtju1#
出于安全原因,如果没有明确的UI交互,这是不可能的,否则可能会“监视”一个人(一旦配对,房间外的人可以开始记录并收听房间内发生的事情)。
解决方法可能是:
izj3ouym2#
以下是我的解决方案:
1.从您的应用触发CallKit呼叫,并控制您的耳机接听呼叫。
1.使用您的耳机录制和传输语音数据与蓝牙通道。