45

我想创建基于 QR 码阅读器的应用程序。

使用哪个库,我可以创建我的应用程序?

注意:我在谷歌搜索。我总是得到zxing。我下载了zxing项目。但问题是;我运行应用程序。但它只读取Barcodes。没有读取二维码的选项。

请告诉我如何做到这一点...

提前致谢。

4

4 回答 4

49

ZBarSDK是另一种选择。一个非常有能力的图书馆。

2014 年 1 月更新

从 iOS7 开始,AVCaptureDevice现在包括读取(各种)条形码并返回人类可读值的能力。如果您的目标是 iOS7+,这就是要走的路。当然,ZBarSDK 仍然非常适合 iOS7 之前的支持。

于 2011-05-05T19:01:49.050 回答
29

AVCaptureMetaDataOutput- 从 iOS 7 开始

使用 iOS 7 新增的 AVCaptureMetaDataOutput 扫描所有种类的 UPC、QR 码和条形码。您只需将其设置为 的输出AVCaptureSession,并相应地实现该captureOutput:didOutputMetadataObjects:fromConnection:方法:

 @import AVFoundation;

 AVCaptureSession *session = [[AVCaptureSession alloc] init];
 AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
 NSError *error = nil;

 AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
                                                                error:&error];
 if (input) {
     [session addInput:input];
 } else {
     NSLog(@"Error: %@", error);
 }

 AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
 [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
 [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
 [session addOutput:output];

 [session startRunning];

 #pragma mark - AVCaptureMetadataOutputObjectsDelegate

 - (void)captureOutput:(AVCaptureOutput *)captureOutput
         didOutputMetadataObjects:(NSArray *)metadataObjects
              fromConnection:(AVCaptureConnection *)connection
   {
    NSString *QRCode = nil;
     for (AVMetadataObject *metadata in metadataObjects) {
       if ([metadata.type isEqualToString:AVMetadataObjectTypeQRCode]) {
            // This will never happen; nobody has ever scanned a QR code... ever
             QRCode = [(AVMetadataMachineReadableCodeObject *)metadata stringValue];
             break;
          }
      }

     NSLog(@"QR Code: %@", QRCode);
   }

AVFoundation支持您听说过的所有代码(可能还有一些您没有听说过的代码):

AVMetadataObjectTypeUPCECode
AVMetadataObjectTypeCode39Code
AVMetadataObjectTypeCode39Mod43Code
AVMetadataObjectTypeEAN13Code
AVMetadataObjectTypeEAN8Code
AVMetadataObjectTypeCode93Code
AVMetadataObjectTypeCode128Code
AVMetadataObjectTypePDF417Code
AVMetadataObjectTypeQRCode
AVMetadataObjectTypeAztecCode
于 2013-10-09T05:54:32.973 回答
3

尝试ZXingObjC工作出色且易于集成。

同样,您可以在视图内定义扫描仪窗口的大小。

于 2013-03-05T19:53:33.007 回答
-1

供您参考,您可以使用webqr.com和它的库,您也可以使用它来解码 QR 码和编码。但对于不同的浏览器,如 safari、Chrome、IE、Firefox,您可以为 This 添加插件。希望对你有帮助。

于 2016-07-19T07:17:00.810 回答