【问题标题】:How to start audio recording when app running on background?应用程序在后台运行时如何开始录音?
【发布时间】: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


【解决方案1】:

出于安全原因,如果没有明确的 UI 交互,这是不可能做到的,否则就有可能“监视”一个人(一旦配对,房间外的人就可以开始录制并收听室内发生的事情房间)。

解决方法可能是:

  • 发送本地通知,例如“设备已准备好录制,要开始吗?”。点按此按钮后,应用会在前台打开,并且应该能够开始录制。
  • 使用 CallKit(适用于类似电话的用例)。当用户在 CallKit 系统 UI 中按下“Accept”时,即使在后台也可以开始录制音频。

【讨论】:

    【解决方案2】:

    这是我的解决方案:

    1. 从您的应用触发 CallKit 通话并控制您的耳机接听电话。

    2. 使用耳机通过蓝牙通道录制和传输语音数据。

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2011-10-31
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多