Apple Watch 在应用程序处于后台时尝试启动录音时收到 561015905

问题描述 投票:0回答:1

当我的应用程序定期在后台运行时,我尝试开始和停止录制。我使用 Timer 和 DispatchQueue 实现它。但是,每当我尝试启动录制时,我都会收到此错误。前台不存在此问题。

这是我的应用程序和配置的当前状态。

我在签名和功能中添加了“后台模式”功能,并且还检查了音频和自我护理。这是我的 Info.plist:

<plist version="1.0">
<dict>
    <key>UIBackgroundModes</key>
    <array>
        <string>audio</string>
    </array>
    <key>WKBackgroundModes</key>
    <array>
        <string>self-care</string>
    </array>
</dict>
</plist>

我还使用了带有 .record 类别的 AVAudioSession 并激活了它。这是代码片段:

func startPeriodicMonitoring() {
        let session = AVAudioSession.sharedInstance()
        do {
            try session.setCategory(AVAudioSession.Category.record, mode: .default, options: [.mixWithOthers])
            try session.setActive(true, options: [])
            print("Session Activated")
            print(session)
            // Start recording.
            measurementTimer = Timer.scheduledTimer(withTimeInterval: measurementInterval, repeats: true) { _ in
                self.startMonitoring()
                DispatchQueue.main.asyncAfter(deadline: .now() + self.recordingDuration) {
                    self.stopMonitoring()
                }
            }
            measurementTimer?.fire()  // Start immediately
        } catch let error {
            print("Unable to set up the audio session: \(error.localizedDescription)")
        }
    }

我明白了

The operation couldn’t be completed. (com.apple.coreaudio.avfaudio error 561015905.)

对此有什么想法吗?

swift avfoundation watchkit apple-watch
1个回答
0
投票

错误代码

561015905
AVAudioSessionErrorCodeCannotStartPlaying
,这很奇怪,正如我对您的情况所期望的
AVAudioSessionErrorCodeCannotStartRecording
561145187
),但事实是您无法在后台启动音频输入或输出。后台音频权限仅允许继续您已在后台启动的音频 IO。

因此,您可以从前台开始录制并且永远不会停止,或者找到其他可以启动音频 IO 的钩子(除了计时器),例如如果您使用的是 iOS,您可以在音频中断或某些 CoreBlueTooth 回调 IIRC 结束时执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.