触觉反馈与AVFoundation不一致? (UIImpactFeedbackGenerator等)

时间:2017-05-27 04:18:06

标签: ios swift avfoundation avcapturedevice haptic-feedback

我正在尝试在后台进行视频/摄像机视图,同时我也允许在我的应用程序中进行各种操作的触觉反馈,但似乎AVFoundation对于我正在进行的任何调用都不是很好触觉呼叫:

     if #available(iOS 10.0, *) {

        let generator = UIImpactFeedbackGenerator(style: .light)
            generator.prepare()
            generator.impactOccurred()
// More:

      let feedbackGenerator  = UISelectionFeedbackGenerator()
                feedbackGenerator.selectionChanged()

}

只要AVFoundation内容被注释掉,触觉反馈效果很好并且符合预期。有什么想法吗?

使用:

    captureSession = AVCaptureSession()

  

previewLayer = AVCaptureVideoPreviewLayer(session:captureSession)

由于

2 个答案:

答案 0 :(得分:1)

从 iOS 13 开始,您可以为 AVAudioSession 设置 setAllowHapticsAndSystemSoundsDuringRecording(_:)

do {
    try AVAudioSession.sharedInstance().setAllowHapticsAndSystemSoundsDuringRecording(true)
} catch {
    print(error)
}

然后你可以使用:

let generator = UIImpactFeedbackGenerator(style: .light)
generator.prepare()
generator.impactOccurred()

答案 1 :(得分:0)

我假设你使用AVCaptureSession然后你可能有这样的代码:

do {
    let audioDevice = AVCaptureDevice.default(for: .audio)
    let audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice!)

    if captureSession.canAddInput(audioDeviceInput) {
        captureSession.addInput(audioDeviceInput)
    } else {
        print("Could not add audio device input to the session")
    }
} catch {
    print("Could not create audio device input: \(error)")
}

因此,音频输入与触觉引擎的效果不佳。在播放触觉之前,您必须从捕获会话中删除音频输入,然后将其添加回来。