加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – AVCaptureDevice isFlashModeSupported已弃用iOS

发布时间:2020-12-14 17:26:17 所属栏目:百科 来源:网络整理
导读:我正在使用AVCaptureDevice的实例方法“isFlashModeSupported”如下: NSArray *captureDeviceType = @[AVCaptureDeviceTypeBuiltInWideAngleCamera,AVCaptureDeviceTypeBuiltInMicrophone];AVCaptureDeviceDiscoverySession *captureDevice = [AVCaptureDev
我正在使用AVCaptureDevice的实例方法“isFlashModeSupported”如下:

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
    }

但在iOS 10中,isFlashModeSupported和setFlashMode方法已被弃用.

Xcode建议使用AVCapturePhotoOutput的-supportedFlashModes.

有什么想法如何使用上述方法?

提前致谢

解决方法

使用此代码.这非常有效.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读