如何给iOS应用添加原生的二维码扫描功能
之前总觉得二维码扫描很高大上,其实apple工程师早就为我们提供了便捷的方法。二维码扫描第三方的库也挺多的,不过效率高的当属系统提供的扫描方法。
二维码扫描主要用到了以下几个类:
AVCaptureDevice
,AVCaptureDeviceInput
,AVCaptureMetadataOutput
,AVCaptureSession
,AVCaptureVideoPreviewLayer
它们之间的关系看这篇文章
扫描的核心代码如下:(最后附上完整代码)
//获取摄像设备AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];if (!device) return;//创建输入流AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];if (!input) return;//创建输出流AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutput alloc]init];if (!output) return;output.rectOfInterest = CGRectMake(0.1, 0, 0.9, 1);//设置代理 在主线程里刷新[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];//初始化链接对象_session = [[AVCaptureSession alloc]init];//高质量采集率[_session setSessionPreset:AVCaptureSessionPresetHigh];if ([_session canAddInput:input]) {[_session addInput:input];}else{return;}if ([_session canAddOutput:output]) {[_session addOutput:output];}else{return;}//设置扫码支持的编码格式(如下设置条形码和二维码兼容)output.metadataObjectTypes=@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code];AVCaptureVideoPreviewLayer * layer = [AVCaptureVideoPreviewLayer layerWithSession:_session];layer.videoGravity = AVLayerVideoGravityResizeAspectFill;layer.frame = self.view.layer.bounds;[self.view.layer insertSublayer:layer atIndex:0];//开始捕获[_session startRunning];
完整代码地址
转载于:https://www.cnblogs.com/Qingbo/p/5153237.html
如何给iOS应用添加原生的二维码扫描功能相关推荐
- iOS 自带二维码扫描功能的实现
#自从iOS7以后中新增了二维码扫描功能.因此可以在不借助第三方类库的情况下简单的写出二维码的扫描功能: 原生的二维码扫描功能在AVFoundation框架下,所以在使用原生的二维码扫描功能时要先导入 ...
- iOS原生实现二维码扫描
iOS原生实现二维码扫描 最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时 ...
- 在iOS中集成ZXing实现二维码扫描
图片找不到了.代码也找不到了.强制必须支持arm64位之后原来的zxing也不好用了. 现在苹果原生AVCaptureSession在iOS 7以上已经提供了二维码扫描功能,不用再依赖于Zxing了. ...
- Flutter 3.X二维码扫描功能
Flutter 3.X二维码扫描功能 1. pubspec.yaml文件添加依赖 2使用 3. 源代码 4.第二种方式 4.1 pubspec.yaml文件添加依赖 4.2 使用 源代码 1. pub ...
- MUI 结合 HTML5+ 实现的二维码扫描功能
扫码登录的实现原理 原理解释: 接下来就是对于这个服务的详细实现.首先,大概说一下原理:用户打开网站的登录页面的时候,向浏览器的服务器发送获取登录二维码的请求.服务器收到请求后,随机生成一个uuid, ...
- Android实现二维码扫描功能(四)-ZXing识别图片二维码,相册选图
简介 上一篇 Android实现二维码扫描功能(三)-闪光灯控制介绍了光线较弱情况下开启闪光灯来辅助二维码识别的方法. 本篇我们介绍如何识别相册中的图片(含二维码) 动态演示 使用模拟器录制了动画演示 ...
- JavaCV/OpenCV 二维码扫描功能
JavaCV/OpenCV 二维码扫描功能 怎样配置工程就不再赘述,不清楚的读者可以网上查找资料,二维码扫描功能通过JavaCV实现起来还是挺简单的,主要OpenCV中QRCodeDetector提供 ...
- Android实现二维码扫描功能-ZXing识别图片二维码,相册选图
文章目录 1.演示 2.权限问题 3.实现步骤 4.工具类 5.图片Uri处理(重要更新) 1.演示 2.权限问题 部分朋友在打开相册时遇到读写权限未授权的问题,我在开发的时候没有遇到,也没有注册读写 ...
- Android实现二维码扫描功能(一)ZXing插件接入
简介 关于Android扫描二维码的功能实现,网上有很多相关资料.在对比之后,选用了前辈了修改过的ZXing直接接入到项目中,特制作此demo,介绍整个过程. (最新更新)本篇文章讲解的接入方法对部分 ...
最新文章
- 管理者的智慧:靠制度管人,不靠人管人
- Springboot的slf4j的配置文件模板
- js1:对象的学习,构造函数,继承构造函数【使用教材:JavaScript深度剖析第2版】...
- 如何用python最快的获取大文件的最后几行
- EXCEL两组数相等红色标示并放到第三列_VBA
- Python 抓取数据存储到Mysql中
- 5、oracle下数据完整性约束
- python变量持久化_Python 数据持久化:JSON
- dj鲜生-让应用的模型类生效,搬家到云服务器-非本地操作
- 计算机辅助外文文献,计算机辅助设计建筑CAD论文中英文对照资料外文翻译文献.doc...
- 引导页闪屏界面设计灵感
- 以太坊 智能合约 代码 数据空间 存储在哪儿
- C# 在PPT幻灯片中创建图表
- 被奉为经典的「金字塔原理」,教给我们哪些PPT写作技巧?
- 三个非负整数 马蹄集
- 转专业申请麦吉尔大学计算机,加拿大大学转专业申请秘籍
- App 测试中 ios 和 Android 有哪些区别
- 脚踏实地,不要飘忽不定
- 实现页面头的选择效果(自用)
- 如何利用CCleaner快速查找重复文件?
热门文章
- 2022-2028年中国钢铁智能制造产业竞争现状及发展趋势分析报告
- 大数据与数据挖掘考试题_北京2020届中考物理出题策略大揭秘!
- 2022-2028年中国床上用品行业投资分析及前景预测报告
- 2022-2028年中国纺织服装专业市场深度调研及前景预测报告(全卷)
- 【运维学习笔记】在 vSphere Client上创建新的虚拟机
- jquery过滤HTML标签方法
- 用NVIDIA-NGC对BERT进行训练和微调
- 无人驾驶传感器融合技术
- Android 使用adb 抓取日志信息
- Error: Default interface methods are only supported starting with Android N (--min-api 24): java.uti