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];

Надеюсь, это поможет вам!

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