iOS AV Foundation 二维码扫描 02 扫码
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 扫码相关推荐
- iOS原生实现二维码扫描
iOS原生实现二维码扫描 最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时 ...
- iOS原生实现二维码拉近放大
http://www.cocoachina.com/ios/20180416/23033.html 2018-04-16 15:34 编辑: yyuuzhu 分类:iOS开发 来源:程序鹅 8 300 ...
- iOS相册图片二维码识别
前言:最近客户要求开发一个功能,类似微信长按图片识别图片中的二维码,一开始我使用了ZXingObjC,但是完成后被测试出有些二维码识别不了,所以只能另寻它法,之后更换为苹果系统自带的识别图片二维码的功 ...
- 二维码和app扫码下载
文章目录 二维码基本原理 二级码生成 在线二维码生成 java代码生成二维码 前端二维码生成 app扫码下载 二维码基本原理 参考: https://cli.im/help/48235 二维条码是指在 ...
- wechat-0050,微信公众号,带参数的二维码获取与扫码事件推送
demo:https://github.com/wenrongyao/wechat-demo 摘要:这篇帖子讲述如何获取带参数的二维码,以及扫码带参数的二维码后的事件接收. 微信开发者文档:https ...
- 微信生成带参数的二维码,合成海报,扫码后推送小程序?
微信服务号渠道二维码功能,支持生成带参数二维码,合成海报二维码,微信扫码后推送内容:结合微号帮平台48小时信息推送,推送微信小程序. 带参二维码 海报二维码 微信扫码后回复 48小时信息推送 在微号帮 ...
- vue前端生成二维码,实现扫码下载功能
vue前端生成二维码,实现扫码下载功能 首先需要安装一个插件 npm install --save qrcodejs2 然后在需要的页面引入插件,最后使用 <template><di ...
- uni-app二维码、条形码扫码自定义
uni-app二维码.条形码扫码自定义 - DCloud问答 https://github.com/xiaowang1314/uniapp-plugin-collections/blob/master ...
- Android二维码名片生成扫码识别
功能描述: 填入联系人信息,动态生成二维码名片,长按二维码保存,打开扫码识别内容.app实现了在android6.0或以上动态权限申请功能,适合新手研究.搭建方法请看入门教程菜单中的androidst ...
最新文章
- 算法---Lru缓存(Java)
- 最终的动画函数封装(2)
- 【转载】挖坑浪费时间
- Lovesource博士:或者我是如何学会不再担心和热爱开放的
- C Runtime Library来历, API, MFC, ATL关系
- C++多态的练习——编写一个计算器项目
- Java语言的发展史
- 【升级版】和秋叶一起学Office
- 2021-07-28 cad贱人工具箱5.8
- 经纬度5位数和6位数差多少_经度和纬度的最大长度是多少?
- 直播系统源码搭建、手机直播源码APP平台开发制作
- 设置redis key的expire过期时间
- .NET应用程序 全局RGB效果(VB.NET示例)
- WebForm水印照片
- python爬虫代理ip_Python爬虫如何获取代理ip及ip验证?
- swpuctf 2021
- C# 将一种类型的数组转换为另一种类型的数组
- 单招计算机网络考什么,单招考什么内容 单招一般考什么科目
- 如何进入游戏服务器修改资料,怎么修改游戏服务器的信息
- android studio中写中文注释时,输入法不跟随光标问题
热门文章
- NB-IOT电信云北向开发,电信天翼物联网平台对接应用服务
- CDH启动出现cloudera-scm-server一直挂掉
- 什么是范数,及其对应的 “曼哈顿距离“、“欧式距离“、“闵氏距离“、“切比雪夫距离“
- 【目标流畅阅读文献_语法篇】1.3简单句_动词时态
- AdGuard更多规则推荐
- 【组合数学】递推方程 ( 特征方程与特征根 | 特征方程示例 | 一元二次方程根公式 )
- 想带好团队,要先学会使用GTD
- SOC2- 安全性、可用性、进程完整性、机密性和隐私性五大控制属性
- HCNP-路由交换:GRE(通用路由封装协议)
- python的永久存储——pickle‘泡菜’ ,‘腌制’天气查询脚本