音频设备添加到AVCaptureSession时UIImpactFeedbackGenerator不工作

时间:2017-10-14 23:42:14

标签: ios xcode avfoundation audio-recording haptic-feedback

将麦克风音频输入添加到 AVCaptureSession 似乎会禁用 UIImpactFeedbackGenerator

let audioDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeAudio)
let audioDeviceInput = try AVCaptureDeviceInput(device: audioDevice)
if self.session.canAddInput(audioDeviceInput) {
   self.session.addInput(audioDeviceInput)
}

移除音频设备后,将恢复反馈。

这是正常行为吗?有办法解决这个问题吗?

我注意到iOS相机应用程序处于视频模式并长按缩略图似乎仍然可以使反馈工作。那么必须有办法解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

这似乎是一种故意行为。

您可以停止捕捉会话,播放触觉,然后恢复捕捉会话,这似乎是相机应用程序正在执行的操作,就像您偷看相机提要进入捕获的最后一帧的模糊静态图像一样。例如:

self.session.stopRunning()
// Play haptic
UINotificationFeedbackGenerator().notificationOccurred(.warning)
// Not completely sure if this delay is needed but you might need to wait until the run loop after the haptic plays to resume capture session
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1)
{

    self.session.startRunning()
}

答案 1 :(得分:0)

音频会话(通过AVAudioPlayer,AVCaptureMovieFileOutput等),然后手机不会振动。

我不确定,但99%的人不使用AVCaptureMovieFileOutput。 请更多信息: https://developer.apple.com/documentation/audiotoolbox/1405202-audioservicesplayalertsound

答案 2 :(得分:0)

尝试打开 setAllowHapticsAndSystemSoundsDuringRecordingAVAudioSession