Тактильная обратная связь не играет хорошо с AVFoundation? (UIImpactFeedbackGenerator и т. Д.)

Я пытаюсь иметь вид видео / камеры в фоновом режиме, в то время как я также допускаю тактильную обратную связь в своем приложении для различных действий, но кажется, что 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 (сеанс: captureSession)

Спасибо

2 ответа

Начиная с iOS 13 вы можете установитьsetAllowHapticsAndSystemSoundsDuringRecording(_:)за AVAudioSession:

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

и тогда вы можете использовать:

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

Я предполагаю, что если вы используете 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)")
}

Таким образом, аудио ввод не очень хорошо работает с тактильным движком. Вы должны удалить входной аудиосигнал из сеанса захвата, прежде чем вы начнете играть, а затем добавить его обратно.

Другие вопросы по тегам