Тактильная обратная связь не играет хорошо с 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)")
}
Таким образом, аудио ввод не очень хорошо работает с тактильным движком. Вы должны удалить входной аудиосигнал из сеанса захвата, прежде чем вы начнете играть, а затем добавить его обратно.