Flash зависает AVCaptureSession
У меня есть следующий код для включения факела и вспышки:
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[self.session beginConfiguration];
[device lockForConfiguration:nil];
if(self.flashlightOn == YES)
{
[device setTorchMode:AVCaptureTorchModeOn];
[device setFlashMode:AVCaptureFlashModeOn];
NSLog(@"TurnFlashOn");
}
else
{
[device setTorchMode:AVCaptureTorchModeOff];
[device setFlashMode:AVCaptureFlashModeOff];
NSLog(@"TurnFlashOff");
}
[device unlockForConfiguration];
[self.session commitConfiguration];
Но если код вызывается, мой сеанс, кажется, зависает, если я удаляю часть [device setTorchMode:], все работает нормально. Кто-нибудь знает, что здесь происходит?
РЕДАКТИРОВАТЬ: появляется только при запуске приложения без IDE -> самостоятельно
1 ответ
У меня была такая же проблема с переключением между передней и задней камерами. Это сработало бы в первый раз, когда я использовал устройство, затем каждый раз после этого зависало на "commitConfiguration". Казалось бы, правильная последовательность:
[self.session beginConfiguration];
[device lockForConfiguration:nil];
//*** Do your session configuration stuff here
[device unlockForConfiguration];
[self.session commitConfiguration];
//*** And this is what fixed the problem:
self.session startRunning];
Надеюсь, это поможет вам!