Skip to content

Commit 9bc151d

Browse files
authored
refactor: support specific camera lenses (#56)
1 parent 620fbb2 commit 9bc151d

File tree

1 file changed

+31
-14
lines changed

1 file changed

+31
-14
lines changed

ios/ScannerViewController.m

+31-14
Original file line numberDiff line numberDiff line change
@@ -92,20 +92,37 @@ - (void)toggleTorch
9292

9393
- (void)initCapture
9494
{
95-
self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
95+
NSMutableArray *deviceTypes = [NSMutableArray array];
9696

9797
if (@available(iOS 13.0, *)) {
98-
AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera]
99-
mediaType:AVMediaTypeVideo
100-
position:AVCaptureDevicePositionBack];
98+
[deviceTypes addObject:AVCaptureDeviceTypeBuiltInTripleCamera];
99+
[deviceTypes addObject:AVCaptureDeviceTypeBuiltInDualWideCamera];
100+
[deviceTypes addObject:AVCaptureDeviceTypeBuiltInUltraWideCamera];
101+
}
102+
103+
if(@available(iOS 11.1, *)) {
104+
[deviceTypes addObject:AVCaptureDeviceTypeBuiltInTrueDepthCamera];
105+
}
101106

102-
NSArray *captureDevices = [captureDeviceDiscoverySession devices];
107+
if(@available(iOS 10.2, *)) {
108+
[deviceTypes addObject:AVCaptureDeviceTypeBuiltInDualCamera];
109+
}
103110

104-
if (captureDevices.count > 0) {
105-
NSLog(@"Supports ultrawide camera");
111+
if(@available(iOS 10.0, *)) {
112+
[deviceTypes addObject:AVCaptureDeviceTypeBuiltInTelephotoCamera];
113+
[deviceTypes addObject:AVCaptureDeviceTypeBuiltInWideAngleCamera];
114+
}
106115

107-
self.device = captureDevices[0];
108-
}
116+
AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession
117+
discoverySessionWithDeviceTypes:deviceTypes
118+
mediaType:AVMediaTypeVideo
119+
position:AVCaptureDevicePositionBack];
120+
121+
NSArray *captureDevices = [captureDeviceDiscoverySession devices];
122+
if (captureDevices.count > 0) {
123+
self.device = captureDevices[0];
124+
} else {
125+
self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
109126
}
110127

111128
AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil];
@@ -226,7 +243,7 @@ - (void) onVideoStart: (NSNotification*) note
226243
if ([self.device lockForConfiguration: &error]) {
227244
if ([self.device isFocusModeSupported: AVCaptureFocusModeContinuousAutoFocus])
228245
self.device.focusMode = AVCaptureFocusModeContinuousAutoFocus;
229-
246+
230247
if ([self.device isExposureModeSupported: AVCaptureExposureModeContinuousAutoExposure])
231248
self.device.exposureMode = AVCaptureExposureModeContinuousAutoExposure;
232249
}
@@ -317,25 +334,25 @@ - (CIImage *)adjust:(CIImage *)ciImage
317334
[filter setValue:ciImage forKey:kCIInputImageKey];
318335
[filter setValue:[NSNumber numberWithFloat: saturation] forKey:kCIInputSaturationKey];
319336
ciImage = [filter valueForKey:kCIOutputImageKey];
320-
337+
321338
// shadow
322339
CIFilter *shadowFilter = [CIFilter filterWithName:@"CIHighlightShadowAdjust"];
323340
[shadowFilter setValue:ciImage forKey:kCIInputImageKey];
324341
[shadowFilter setValue:[NSNumber numberWithFloat: shadow] forKey:@"inputShadowAmount"];
325342
ciImage = [shadowFilter valueForKey:kCIOutputImageKey];
326-
343+
327344
// contrast
328345
CIFilter *contrastFilter = [CIFilter filterWithName:@"CIColorControls"];
329346
[contrastFilter setValue:ciImage forKey:kCIInputImageKey];
330347
[contrastFilter setValue:[NSNumber numberWithFloat: contrast] forKey:kCIInputContrastKey];
331348
ciImage = [contrastFilter valueForKey:kCIOutputImageKey];
332-
349+
333350
// brightness
334351
CIFilter *brightnessFilter = [CIFilter filterWithName:@"CIColorControls"];
335352
[brightnessFilter setValue:ciImage forKey:kCIInputImageKey];
336353
[brightnessFilter setValue:[NSNumber numberWithFloat: brightness] forKey:kCIInputBrightnessKey];
337354
ciImage = [brightnessFilter valueForKey:kCIOutputImageKey];
338-
355+
339356
// sharpnessLuminance
340357
CIFilter *sharpnessLuminanceFilter = [CIFilter filterWithName:@"CISharpenLuminance"];
341358
[sharpnessLuminanceFilter setValue:ciImage forKey:kCIInputImageKey];

0 commit comments

Comments
 (0)