在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. H5实现扫描二维码功能

    为了实现H5扫描二维码功能,我在网上找到了可用的代码:https://github.com/zhiqiang21/WebComponent/tree/master/html5-Qrcode 该程序能基 ...

  3. ios7下二维码功能的实现

    苹果公司升级到IOS7后自己的PassBook自带二维码扫描功能,所以现在使用二维码功能不需要在借助第三方库了 使用前请先导入AVFoundation.frameWork // //  YHQView ...

  4. App阅读pdf和扫描二维码功能

    在之前开发的Android手机App中,需要实现阅读pdf和扫描二维码的功能,在github 上找到大牛封装好包,亲测可用. 阅读pdf: https://github.com/barteksc/An ...

  5. 使用vue做移动app时,调用摄像头扫描二维码

    现在前端技术发展飞快,前端都能做app了,那么项目中,也会遇到调用安卓手机基层的一些功能,比如调用摄像头,完成扫描二维码功能 下面我就为大家讲解一下,我在项目中调用这功能的过程. 首先我们需要一个中间 ...

  6. uni-app开发经验分享十三:实现手机扫描二维码并跳转全过程

    最近使用 uni-app 开发 app ,需要实现一个调起手机摄像头扫描二维码功能,官网API文档给出了这样一个demo: // 允许从相机和相册扫码 uni.scanCode({ success: ...

  7. Swift3.0生成二维码、扫描二维码、相册读取二维码,兼容iOS7(结合ZXingObjC)

    二维码生成 //MARK: 传进去字符串,生成二维码图片(>=iOS7) text:要生成的二维码内容 WH:二维码高宽 private func creatQRCodeImage(text: ...

  8. ios7新增api实现扫描二维码

    本来用的ZBar开源库实现的扫描二维码,可是貌似不支持arm64了,也没有在更新. 如今不用适配ios7下面.而iOS新增系统API已支持扫码,參考老外的一篇博客做了个demo.须要的能够參考下 參考 ...

  9. 用vue实现扫描二维码跳转页面功能

    怎么能用vue实现扫描二维码跳转页面功能 1. 安装依赖 npm install vue-qr --save 2. <template>   <div>     <div ...

随机推荐

  1. 配置VirtualBox Linux系统与Windows共享文件

    手动方式配置VirtualBox Linux系统与Windows共享文件 首先,要安装VirtualBox自带的扩展工具,这个ISO可以在虚拟主机安装目录下找到. 将这个文件Copy到你的Linux主 ...

  2. hadoop1.2.1+hbase0.90.4+nutch2.2.1+elasticsearch0.90.5配置(伪分布式)

    系统:ubuntu14.04 一.hadoop安装 ssh免密码登陆详情见上一篇博客. 解压hadoop1.2.1到某个目录下,这里解压到ubuntu下载目录下(注意没必要使用管理员权限) 在hado ...

  3. Qt Creator编译时:cannot open file 'debug\QtGuiEx.exe' File not found

    Qt Creator编译时:cannot open file 'debug\QtGuiEx.exe' File not found 利用Qt Creator编译工程时,出现如题目所示的错误,其中红色部 ...

  4. Python常用模块(time, datetime, random, os, sys, hashlib)

    time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...

  5. 力挺8天入门wpf【转载】

    8天入门wpf—— 第八天 最后的补充 摘要: 从这一篇往前看,其实wpf中还有很多东西没有讲到,不过我的原则还是将比较常用的知识点过一遍,如果大家熟悉了这些知识,基本功也就打的差不多了,后续可以等待 ...

  6. Android设备定制为永不锁屏

    Android系统的锁屏时间存放在Setting数据库中,字段为Settings.System.SCREEN_OFF_TIMEOUT.查看 DatabaseHelper.java文件可以找到: fra ...

  7. 初学SSH(其一)

    其实,之前一直搞不清楚,SSH整合后,Spring框架究竟是怎么连接Hibernate,并且怎么结合Dao层的,后来,我在网上查了资料,Spring+hibernate访问数据库有3种方法: 一. 注 ...

  8. 基于 koajs 的前后端分离实践

    一.什么是前后端分离? 前后端分离的概念和优势在这里不再赘述,有兴趣的同学可以看各个前辈们一系列总结和讨论: 系列文章:前后端分离的思考与实践(1-6) slider: 淘宝前后端分离实践 知乎提问: ...

  9. eclipse美化,全黑eclipse 保护眼睛

    如标题,闲话不多说.有图说明一切.看看这是你想要的嘛? 教程及资源下载地址: http://download.csdn.net/detail/shoneworn/8326097

  10. Android布局控件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...