Я использую приведенный ниже код для сканирования QRCode и BarCode, и он работает хорошо, когда я сканирую код с экрана ноутбука и любой код печати на бумаге, он работает быстро. но когда я сканирую с любого другого мобильного устройства, такого как телефон Android, оно не сканируется быстро.
scanRect = CGRectMake(scanRect.origin.y/windowSize.height, scanRect.origin.x/windowSize.width, scanRect.size.height/windowSize.height,scanRect.size.width/windowSize.width);
self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
self.input = [AVCaptureDeviceInput deviceInputWithDevice:self.device error:nil];
self.output = [[AVCaptureMetadataOutput alloc]init];
[self.output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
self.session = [[AVCaptureSession alloc]init];
[self.session setSessionPreset:([UIScreen mainScreen].bounds.size.height<500)?AVCaptureSessionPreset640x480:AVCaptureSessionPresetHigh];
AVCaptureDevice *frontDevice;
AVCaptureDeviceInput *frontDeviceInput;
for (AVCaptureDevice *device in [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]) {
if (device.position == AVCaptureDevicePositionFront) {
frontDevice = device;
}
}
if (frontDevice) {
frontDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:frontDevice error:nil];
}
[_session addInput:frontDeviceInput];
[self.session addOutput:self.output];
self.output.metadataObjectTypes= self.output.availableMetadataObjectTypes;//@[AVMetadataObjectTypeQRCode,AVMetaObject];
self.output.rectOfInterest = scanRect;
self.preview = [AVCaptureVideoPreviewLayer layerWithSession:self.session];
self.preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
self.preview.frame = CGRectMake(0, 0, _scanView.frame.size.width, _scanView.frame.size.height); //[UIScreen mainScreen].bounds;
self.previewLayerConnection=self.preview.connection;
if ([self.previewLayerConnection isVideoOrientationSupported])
{
self.previewLayerConnection.videoOrientation = [self videoOrientationFromCurrentDeviceOrientation];
}
[self.scanView.layer insertSublayer:self.preview atIndex:0];
[self.session startRunning];