AVCaptureDevice isFlashModeSupported deprecated iOS 10

I use the AVCaptureDevice instance method "isFlashModeSupported" as shown below:

NSArray *captureDeviceType = @[AVCaptureDeviceTypeBuiltInWideAngleCamera,AVCaptureDeviceTypeBuiltInMicrophone];
AVCaptureDeviceDiscoverySession *captureDevice = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:captureDeviceType mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified];

NSArray *deviceList = [captureDevice devices];
AVCaptureDevice *selectedCamera = [deviceList objectAtIndex:(NSUInteger)currentCameraDeviceIndex];

if ( [selectedCamera isFlashModeSupported:AVCaptureFlashModeAuto] ){
        [selectedCamera setFlashMode:AVCaptureFlashModeAuto];   // AVCaptureFlashModeAuto
    }

But in iOS 10 isFlashModeSupported, the setFlashModemethods are outdated.

Xcode suggests using AVCapturePhotoOutput -supportedFlashModes instead.

Any ideas how to use the above method?

Thanks in advance

+4
source share
2 answers

Use this code. It works great.

AVCaptureSession *session = [[AVCaptureSession alloc] init];
[session setSessionPreset:AVCaptureSessionPresetPhoto];


AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if ([device hasFlash]) {
   [device lockForConfiguration:nil];
   device.flashMode = AVCaptureFlashModeAuto;
   [device unlockForConfiguration];
}
+1
source

How is it with this?

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

if ([device hasFlash]) {if ([self.stillImageOutput.supportedFlashModes containsObject: [NSNumber numberWithInt: AVCaptureFlashModeOn]]) {

}

0
source

Source: https://habr.com/ru/post/1688797/


All Articles