【发布时间】:2022-01-03 07:52:10
【问题描述】:
我正在录音。当应用程序在前台运行时,我必须开始录音并在那时录音工作正常进入后台。
但我的问题是当我已经在后台时如何开始录音,我的录音功能是这样触发的:
我有一个带按钮的蓝牙 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)
}
}
}
我找不到合适的解决方案来做这件事,请建议我做这件事的正确方法,在此先感谢。
【问题讨论】:
-
用户将如何开始录制?使用 Siri?如果是这样,SiriKit 应该可以做到这一点。
-
@a_hausb 我有一个蓝牙设备。当触发蓝牙设备时,我需要开始录音。
-
您是否尝试过从应用委托 applicationDidEnterBackground 执行此代码
-
@JulianSilvestri 我已经尝试过但没有工作。其实我想在进入后台时触发蓝牙设备不启动时开始录制。
标签: swift objective-c xcode audio audio-recording