在ios7曾经,我们开发二维码扫描,或者生产都须要借助第三方的开源库进行开发。

然后升级到ios7时,在passbook中苹果自带二维码扫描功能,并且扫描速度很快,秒杀一切第三方开源库。

所以,我们做二维码的开发选用自带sdk优先级应该高于其它的库。

说到二维码的开发。我们须要用到这两个对象。例如以下。

@property (nonatomic,strong) AVCaptureSession *captureSession;

@property (nonatomic,strong) AVCaptureVideoPreviewLayer *videoPreviewLayer;

CaptureSession 这是个捕获会话,也就是说你能够用这个对象从输入设备捕获数据流。

AVCaptureVideoPreviewLayer 能够通过输出设备展示被捕获的数据流。

首先我们应该推断当前设备是否有捕获数据流的设备。

AVCaptureDevice *captureDevice = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

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

if (!input) {

NSLog(@"%@", [errorlocalizedDescription]);

return NO;

}

如上,假设捕获到错误。直接返回。

初始化一个CaptureSession对象

_captureSession = [[AVCaptureSessionalloc] init];

设置会话的输入设备

[_captureSession addInput:input];

相应输出

AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutputalloc] init];

[_captureSession addOutput:captureMetadataOutput];

创建一个队列

dispatch_queue_t dispatchQueue;

dispatchQueue = dispatch_queue_create("myQueue",NULL);

[captureMetadataOutput setMetadataObjectsDelegate:selfqueue:dispatchQueue];

[captureMetadataOutput setMetadataObjectTypes:[NSArrayarrayWithObject:AVMetadataObjectTypeQRCode]];

降捕获的数据流展现出来

_videoPreviewLayer = [[AVCaptureVideoPreviewLayeralloc] initWithSession:_captureSession];

[_videoPreviewLayersetVideoGravity:AVLayerVideoGravityResizeAspectFill];

[_videoPreviewLayer setFrame:_viewPreview.layer.bounds];

[_viewPreview.layeraddSublayer:_videoPreviewLayer];

開始捕获

[_captureSession startRunning];

获得的数据在

AVCaptureMetadataOutputObjectsDelegate 唯一定义的方法中

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection;

推断是否有数据。是否是二维码数据

if (metadataObjects != nil && [metadataObjects count] > 0) {

AVMetadataMachineReadableCodeObject *metadataObj = [metadataObjectsobjectAtIndex:0];

if ([[metadataObjtype] isEqualToString:AVMetadataObjectTypeQRCode]) {

//获得扫描的数据。并结束扫描

[selfperformSelectorOnMainThread:@selector(stopReading:)withObject:metadataObj.stringValuewaitUntilDone:NO];

}

}

每天一小步,希望能帮助一些朋友。

晚安啦。

。。。

对于ios7扫描二维码功能的实现相关推荐

  1. SNF开发平台WinForm-平板拍照及扫描二维码功能

    在我们做项目的时候,经常会有移动平板处理检验,审核等,方便移动办公.这时就需要在现场拍照上传问题,把当场问题进行上传,也有已经拍完照的图片或加工过的图片进行上传.还有在车间现场一体机,工控机 这种产物 ...

  2. 让你的APP轻松加上扫描二维码功能

    在这个二维码横行的年代,如果一个APP连扫描二维码的功能都没有是会被耻笑的.今天小老虎教小白们如何为自己的APP添加扫描二维码功能和生成二维码,并做到外部扫描跳转网页,内部扫描跳转具体Activity ...

  3. 在js中调用微信的扫描二维码功能

    在js中调用微信的扫描二维码功能* 关键代码 <html> <head>`在这里插入代码片`<title>js调用微信扫一扫功能测试</title>&l ...

  4. 在Vue中调用微信的扫描二维码功能

    在Vue中调用微信的扫描二维码功能 步骤 新建vue文件(这里采用mint的标签库--就一个按钮~~) 关键代码 <template><div class="login_d ...

  5. uni-app实现扫描二维码功能

    文章目录 1.重点部分的代码 2.页面的效果图 3.总结 1.重点部分的代码 <view class="flex nfc-ewm"><view class=&qu ...

  6. ionic5 + cordova:使用QRScanner完成扫描二维码功能

    接到一个app的改造的任务,主要是适配一款手持设备,在页面上增加一个类似微信的二维码扫描的唤醒按钮,点击之后进入扫描二维码的页面---- 步骤如下: 1.在项目中下载QRCode的cordova插件: ...

  7. 关于在软件中添加扫描二维码功能的详细步骤及对应的资源。

    最近有在一款软件中添加二维码扫描功能,在网上整理了一堆资源后,把一些干货拿出来给大家分享,希望大家以后能更容易的使用这个功能. 详细步骤见这个视频连接:http://www.jikexueyuan.c ...

  8. Android 实现ZXING扫描二维码功能

    1.在build.gradle加入依赖: implementation 'com.journeyapps:zxing-android-embedded:4.3.0' 2.CaptureActivity ...

  9. Honeywell手机安装扫描二维码功能配置

    首先吐糟下,从未见过手机给客户之后还要配置那么多东西才能用的情况.也是醉了. 配置步骤 添加压缩包:将 update_eda50.zip 放到手机的 \honeywell\autoinstall 目录 ...

最新文章

  1. 设计模式之八大设计原则
  2. php中的核心函数有哪些,PHP内核探索:函数的分类
  3. 北京大学2019年数学分析考研试题
  4. ElasticSearch的中文分词
  5. python的变量名有哪些_Python 趣闻:如何获得变量的名字?
  6. JAVA计算机毕业设计大学生旅游拼团网站Mybatis+源码+数据库+lw文档+系统+调试部署
  7. OpenCV:灰度图转伪彩色图
  8. 关于百度ueditor图片上传到OSS问题解决
  9. Spring THREE
  10. druid监控页面 关闭_druid-springboot-starter默认启用监控页面,公网项目可能外泄DB信息...
  11. 请教PCI卡的DMA方式问题
  12. MATLAB颜色识别
  13. 杨建荣的学习笔记排行榜(r2笔记100天)
  14. FICO凭证错误:BKPFF$PRDCLN800在FI中达到的项目最大编号
  15. Windows留后门--教程(一)——Windows系统隐藏账户
  16. 中级Java 程序员 — 2020
  17. Android集成百度人脸识别(一)基础版SDK
  18. Iperf测试问题处理指南
  19. 用python画象棋棋盘_Python turtle绘画象棋棋盘
  20. 音视频 — 图像基础

热门文章

  1. 电脑上可以连接网线可以上网,但是WiFi没有了
  2. 那年花一个钟用PS改证件照的背景色,今天用Excel我只花了60秒!
  3. MXNet的训练基础脚本:base_module.py
  4. Mac使用jd-gui启动报错 This program requires Java 1.8+
  5. 电子信息类和计算机类专业网课表
  6. 关于UnityPC端打包参数设置及发布PC端时固定分辨率
  7. 【生活中的逻辑谬误】质的量化和以出身论英雄
  8. 给一个DIV的右上解加一个删除按钮
  9. rk3288 android6,RK3288 的 Android 7.1.2 来了!
  10. VMware虚拟机的安装以及基一些础命令