4

I am using AVCaptureDevice's instance method "isFlashModeSupported" as 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 and setFlashMode methods are deprecated.

Xcode suggest to use AVCapturePhotoOutput's -supportedFlashModes instead.

Is any idea how to use the above method?

Thanks in advance

Tejas Bharambe
  • 672
  • 1
  • 12
  • 27

2 Answers2

0

Use this code. This works perfectly.

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];
}
Pranjal Bikash Das
  • 1,092
  • 9
  • 27
Rishi Chaurasia
  • 520
  • 4
  • 18
  • 3
    You are checking device has flash or not. But I want to check supported flash mode like isFlashModeSupported. Also flashMode property is deprecated. Xcode suggesting to use AVCapturePhotoOutput's -supportedFlashModes instead. – Tejas Bharambe Nov 06 '17 at 11:51
0

How is it with this?

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

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


}
PPL
  • 6,357
  • 1
  • 11
  • 30
yu abe
  • 1