У меня трудные времена, для чего-то, что, я думаю, должно быть простым. Я просто хочу зажечь вспышку при съемке в приложении iOS. И все, что я пробовал, не работает или работает только на 20 процентов.Невозможно использовать AVCaptureDevice со вспышкой
Вот код обжигает свет вспышки вверх:
// Here we have: captureDevice.hasFlash && captureDevice.isFlashModeSupported(.On)
do {try captureDevice.lockForConfiguration()
captureDevice.flashMode = .On
captureDevice.unlockForConfiguration()
} catch let error as NSError {
print("captureDevice.lockForConfiguration FAILED")
print(error.code)
}
Я попробовал несколько разновидностей коды, перемещая 2 строки внутри Ьги блока до конца, или путем вызова функции, содержащую этот код из разных точек. Но во всех случаях в момент запуска этого:
stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) {
(imageDataSampleBuffer, error) -> Void in
Я получаю следующее сообщение об ошибке:
Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSUnderlyingError=0x13f079340 {Error Domain=NSOSStatusErrorDomain Code=-16800 "(null)"}, NSLocalizedFailureReason=An unknown error occurred (-16800), NSLocalizedDescription=The operation could not be completed}
Если я затем заменить строку:
captureDevice.flashMode = .On
по:
captureDevice.torchMode = .On
Я получаю что-то более или менее работающее (к сожалению, гораздо меньше), без ошибок, но это с помощью фонарика, так что я получаю временные проблемы:
Также не ясно, если мне нужно использовать эту линию в какой-то момент в моем коде:
captureSession.commitConfiguration()