码迷,mamicode.com
首页 > 移动开发 > 详细

iOS AV Foundation 二维码扫描 02 扫码

时间:2015-03-21 15:41:53      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:二维码   av foundation   

AVFoundation支持以下一维和二维码的扫描:

  • QR code
  • Aztec
  • EAN13
  • EAN8
  • UPC-E
  • PDF417
  • Code 93
  • Code 39
  • Code 39 mode 41

QR code就是我们所熟知的二维码。

打开ViewController.m,添加以下实例变量:

AVCaptureMetadataOutput *_metadataOutput;
当从视频帧中检测到元数据时,AVCaptureMetadataOutput会调用应用程序的回调函数。AV Foundation支持两种类型的元数据:机器可读的编码和人脸识别。

添加以下代码到setupCaptureSession的最后来实现对元数据的捕捉和处理:

    _metadataOutput = [[AVCaptureMetadataOutput alloc] init];
    dispatch_queue_t metadataQueue = dispatch_queue_create("com.yaming.ColloQR.metadata", 0);
    [_metadataOutput setMetadataObjectsDelegate:self queue:metadataQueue];
    
    if([_captureSession canAddOutput:_metadataOutput])
    {
        [_captureSession addOutput:_metadataOutput];
    }
这里,我们首先创建AVCaptureMetadataOutput的实例,然后为其创建一个dispatch queue,这样避免在回调函数被调用时,阻塞主线程。

接下来,声明本类遵循AVCaptureMetadataOutputObjectsDelegate协议:

@interface ViewController () <AVCaptureMetadataOutputObjectsDelegate>
实现代理方法:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
    [metadataObjects enumerateObjectsUsingBlock:^(AVMetadataObject *obj,
                                                  NSUInteger idx,
                                                  BOOL *stop)
     {
         NSLog(@"Metadata: %@", obj);
     }];
}
每当AVCaptureMetadataOutput类检测到新的元数据时,调用captureOutput方法,在captureOutput方法中,我们打印所有检测到的元数据。

修改startRunning方法,在最后添加如下代码:

    _metadataOutput.metadataObjectTypes = _metadataOutput.availableMetadataObjectTypes;
这样做的目的是设置要检测的元数据类型为所有类型。

编译运行,扫描以下二维码将得到如下输出:

技术分享

2015-03-21 14:51:42.289 ColloQR[680:176124] Metadata: <AVMetadataMachineReadableCodeObject: 0x170221540, type="org.iso.QRCode", bounds={ 0.4,0.2 0.1x0.3 }>corners { 0.4,0.5 0.5,0.5 0.5,0.2 0.4,0.2 }, time 31026866447458, stringValue "iOS二维码扫描"
这样我们就完成了使用AV Foundation进行二维码扫描的功能。从log中可以看到,有bounds和conrners信息,下一节我们将利用这个信息,当扫码成功时,为用户提供可视的反馈。

转载请注明出处:http://blog.csdn.net/yamingwu/article/details/44515625

iOS AV Foundation 二维码扫描 02 扫码

标签:二维码   av foundation   

原文地址:http://blog.csdn.net/yamingwu/article/details/44515625

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!