Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS条码扫描api,可同时读取3个条码_Ios_Objective C_Barcode - Fatal编程技术网

IOS条码扫描api,可同时读取3个条码

IOS条码扫描api,可同时读取3个条码,ios,objective-c,barcode,Ios,Objective C,Barcode,这个问题似乎有点抽象,但通常我需要开发一个条形码扫描应用程序,能够同时检测多个条形码(最多3个)。有人知道这个任务有什么好的api吗?(Swift或目标C可以)。任何帮助都非常感谢!谢谢我已经有一个应用程序与Zxing api,但似乎没有一个选项来检测多个条形码 你需要!AVFoundation可以扫描条形码 此功能的主要兴趣: #pragma mark - AVCaptureMetadataOutputObjectsDelegate methods - (void)captureOutput:

这个问题似乎有点抽象,但通常我需要开发一个条形码扫描应用程序,能够同时检测多个条形码(最多3个)。有人知道这个任务有什么好的api吗?(Swift或目标C可以)。任何帮助都非常感谢!谢谢我已经有一个应用程序与Zxing api,但似乎没有一个选项来检测多个条形码

你需要!AVFoundation可以扫描条形码

此功能的主要兴趣:

#pragma mark - AVCaptureMetadataOutputObjectsDelegate methods
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection {
//THIS YOU CAN USE ARRAY OF AVMetadataObjectType
    NSString *supportedBarcodeType = AVMetadataObjectTypeCode128Code;

    for (AVMetadataObject *barcodeMetadata in metadataObjects) {
        if ([barcodeMetadata.type isEqualToString:supportedBarcodeType]) {
            AVMetadataMachineReadableCodeObject *barcodeObject = (AVMetadataMachineReadableCodeObject *)[self.captureLayer transformedMetadataObjectForMetadataObject:barcodeMetadata];
        //barcode is FIND!
            NSString *capturedBarcode = [barcodeObject stringValue];

            return;
        }
    }
}
配置方法:

static char * const metadataOutputQueue = "metadataOutputQueue";

- (void)configureSessionWithError:(NSError **)error {    

    self.captureSession = [[AVCaptureSession alloc] init];

    NSError *inputError = nil;
    AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&inputError];

    if ( nil != inputError || nil == input) {
        *error = inputError;
        return;
    }

    [self.captureSession addInput:input];

    AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
    [self.captureSession addOutput:captureMetadataOutput];

    dispatch_queue_t dispatchQueue = dispatch_queue_create(metadataOutputQueue, NULL);
    [captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatchQueue];
//THIS YOU CAN ADD ARRAY OF AVMetadataObjectType FOR DETECTING BARCODES
    [captureMetadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeCode128Code]];

    self.captureLayer = [AVCaptureVideoPreviewLayer layerWithSession:self.captureSession];
    [self.captureLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
    [self.captureLayer setFrame:self.cameraPreviewView.layer.bounds];

    [self.cameraPreviewView.layer addSublayer:self.captureLayer];

    self.sessionConfigured = YES;
}

技术说明!您可以在

上找到教程,非常感谢您的帮助。我正在阅读教程和源代码。但需要解决的一个问题是同时读取多个条形码(最多3个)(一行3个条形码)的能力。有什么方法可以做到这一点吗?在captureOutput:didOutputMetadataObject:我想你可以捕获3个条形码。但你应该删除返回;之后,将扫描第一个条形码。并且需要处理其他条码的其他场景。似乎教程只能捕捉QR。我们如何捕获二维码和条形码?(1D和2D…?@LêKhánhVinh您可以更改AVMetadataObjectTypes或使用数组作为AVMetadataObjectTypes并扫描1D或2D条形码。@LêKhánhVinh您可以在[CaptureMataOutput availableMetadataObjectTypes]中找到所有可用的MetadataObjectTypes;