UIImpactFeedbackGenerator не работает, когда аудиоустройство добавлено в AVCaptureSession

Добавление аудиовхода микрофона к AVCaptureSession, по-видимому, отключает UIImpactFeedbackGenerator.

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

После удаления аудиоустройства обратная связь возобновляется.

Это нормальное поведение? Есть ли способ обойти это?

Я заметил, что стандартное приложение iOS Camera в видеорежиме, и долгое нажатие на миниатюру, кажется, по-прежнему работает. Значит, должен быть какой-то способ обойти это?


person Gizmodo    schedule 14.10.2017    source источник


Ответы (3)


Похоже, это преднамеренное поведение.

Вы можете остановить сеанс захвата, воспроизвести тактильный эффект, а затем возобновить сеанс захвата, что, по-видимому, делает приложение камеры, так как при просмотре камера переходит к размытому статичному изображению последнего захваченного кадра. Например:

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()
}
person beyowulf    schedule 15.10.2017

Аудиосессия (через AVAudioPlayer, AVCaptureMovieFileOutput и т. д.), тогда телефон НЕ будет вибрировать.

Я не уверен, но 99% не работает с AVCaptureMovieFileOutput. Дополнительная информация: https://developer.apple.com/documentation/audiotoolbox/1405202-audioservicesplayalertsound

person Giang    schedule 29.05.2018

Попробуйте включить setAllowHapticsAndSystemSoundsDuringRecording из AVAudioSession.

person BB9z    schedule 30.07.2021