2014-10-30 3 views
0

Мне нужно сканировать штрих-коды GTIN-14, также называемые GS1-128 или ITF-14 (http://www.gtin.info/). Я пробовал использовать AVFoundation framework, добавляя все доступные типы штрих-кодов, но он не работает.Сканирование штрих-кодов GTIN-14 с каркасом AVFoundation в iOS

- (void)startReading 
{ 
    NSArray *barCodeTypes = @[AVMetadataObjectTypeUPCECode, AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeCode39Mod43Code, 
           AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode93Code, AVMetadataObjectTypeCode128Code, 
           AVMetadataObjectTypePDF417Code, AVMetadataObjectTypeQRCode, AVMetadataObjectTypeAztecCode]; 

    NSError *error; 
    AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error]; 

    if (!input) { 
     NSLog(@"%@", [error localizedDescription]); 
    } 

    self.captureSession = [[AVCaptureSession alloc] init]; 
    [self.captureSession addInput:input]; 


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

    [captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()]; 
    [captureMetadataOutput setMetadataObjectTypes:barCodeTypes]; 
    //[captureMetadataOutput setMetadataObjectTypes:[captureMetadataOutput availableMetadataObjectTypes]]; 

    self.videoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession]; 
    [self.videoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
    [self.videoPreviewLayer setFrame:self.cameraView.layer.bounds]; 
    [self.cameraView.layer addSublayer:self.videoPreviewLayer]; 

    [self.captureSession startRunning]; 
} 

Возможно ли с помощью AVFoundation framework? Есть ли еще одна структура для сканирования штрих-кодов GTIN-14?

+0

Нет штрих-кода GTIN-14. GTIN - это структура данных, которая может быть закодирована в GS1-128, ITF-14 или других штрих-кодах. Что вы точно подразумеваете под «это не работает»? Вы можете разместить ссылку на изображение? – tobltobs

+0

Я думаю, вы просто не добавляли все поддерживаемые форматы штрих-кода в свой массив 'barCodeTypes'. [AVMetadataObjectTypeITF14Code] (https://developer.apple.com/documentation/avfoundation/avmetadataobjecttypeitf14code?language=objc) - это то, что вам нужно. ;) –

ответ

1

Другие считыватели штрих-кода для ios: http://zbar.sourceforge.net.

+0

Да, я, наконец, использовал ZBar от CocoaPods (pod 'ZBarSDK', '~> 1.3'), и он работает! –