我在两个项目中分别使用了ZBarSDK与系统自带的扫码,今天主要介绍一下系统自带的扫码。

1。系统自带的

(1)先声明两个属性

@property (nonatomic,strong)AVCaptureSession *session; //捕捉会话

@property (nonatomic,strong)AVCaptureVideoPreviewLayer *layer; //扫描图层

(2)添加输入设备并检查设备是否支持相机

//添加输入设备并创建捕捉会话

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

self.session = [[AVCaptureSession alloc] init];

AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];

NSError *error=nil;

if (input) {

[self.session addInput:input];

}else{

NSLog(@"获取摄像设备error:%@",[error localizedDescription]);

}

//检查相机状态

AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

if(status == AVAuthorizationStatusAuthorized) {

[self setupCamera];

} else {

[self showStr:@"您没有权限访问相机" withSelf:self withMinier:2.0];

}

(3)在能打开相机的情况下创扫描图层

//添加输出数据

AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];

[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

//高质量采集率

[self.session setSessionPreset:AVCaptureSessionPresetHigh];

[self.session addOutput:output];

//设置扫码支持的编码格式(如下设置条形码和二维码兼容)

[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code]];

//添加扫描图层

self.layer = [AVCaptureVideoPreviewLayer layerWithSession:self.session];

self.layer.frame = CGRectMake((ScreenWidth-250)/2,ScreenHeight*0.25, 250, 250);

self.layer.videoGravity = AVLayerVideoGravityResizeAspectFill;

[self.view.layer addSublayer:self.layer];

(4)开始扫描

[self.session startRunning];

(5)如果扫描到数据会调用代理方法 (遵守AVCaptureMetadataOutputObjectsDelegate协议)

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

   注意:xcode8的 用户在使用这个功能的时候要先再plist。info 中添加项: Privacy - Camera Usage Description     是否允许此App使用你的相机?

2.ZBarSDK

    参考自:http://www.mincoder.com/article/4419.shtml

iOS---扫码的更多相关文章

  1. iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

    iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言:    今天给大家 ...

  2. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)

    项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...

  3. iOS开发——iOS7(及以后版本) SDK自带二维码(含条形码)扫码、二维码生成

    本文转载至 http://www.cnblogs.com/leotangcn/p/4357907.html 现在很多APP都涉及了二维码扫码功能,这个功能简单实用,很多情况下用户乐于使用,现在本文带来 ...

  4. 【JAVA笔记】JAVA后端实现统一扫码支付:微信篇

    最近做完了一个项目,正好没事做,产品经理就给我安排了一个任务.   做一个像收钱吧这样可以统一扫码收钱的功能.   一开始并不知道是怎么实现的,咨询了好几个朋友,才知道大概的业务流程:先是开一个网页用 ...

  5. iOS源码博文集锦3

    iOS精选源码 高仿淘宝首页 登录动画 iOS高德二次封装,有定位,轨迹,语音实时导航,GPS纠偏..... 逗视iOS客户端MGDS_Swift 两句代码搞定转场动画 自定义刷新控件 已封装支持自定 ...

  6. iOS源码博文集锦2

    iOS精选源码 快速集成观看直播和开播   一款类携程商旅的城市选择界面   一个类似于QQ电话的动画效果   高德地图定位,导航,轨迹,GPS纠偏   真实逻辑滚动数字DPScrollNumberL ...

  7. 必做作业3:原型化设计:地铁扫码app

    一.设计背景 伴随着地铁规模的快速扩张,使用手机扫码进出站成为了一种新型的地铁出行方式.在今天的北京和上海,地铁扫码已经极为普遍,广州和深圳也正在快速普及这种新方式.相信在不久的将来,其他拥有地铁或者 ...

  8. ionic3 实现扫码功能

    ionic3 通过插件phonegap-plugin-barcodescanner,调用机器硬件摄像头实现扫码功能. 首先当然先了解下 phonegap-plugin-barcodescanner,这 ...

  9. JS代码识别扫码设备

    <!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8" ...

  10. uni-app 自定义扫码界面

    二维码扫描,已经成为当下一款应用不可或缺,同时也是用户习以为常的功能了.uni-app 为我们提供了扫码 API ,直接调用即可. 需求场景 在实际开发中,平台提供的默认扫码界面,并不能满足一些自定义 ...

随机推荐

  1. C# Excel导入、导出【源码下载】

    本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...

  2. 深入理解BFC

    定义 在解释BFC之前,先说一下文档流.我们常说的文档流其实分为定位流.浮动流和普通流三种.而普通流其实就是指BFC中的FC.FC是formatting context的首字母缩写,直译过来是格式化上 ...

  3. IE8/9 本地预览上传图片

    本地预览的意思是,在选择图片之后先不上传到服务器,而是由一个<img>标签来预览本地的图片,非 IE8/9 浏览器可以从<input type="file"/&g ...

  4. 步入angularjs directive(指令)--准备工作熟悉hasOwnProperty

    在讲解directive之前,先做一下准备工作,为何要这样呢? 因为我们不是简单的说说directive怎么用,还要知道为什么这么用!(今天我们先磨磨刀!). 首先我们讲讲js 基础的知识--hasO ...

  5. RSA非对称加密,使用OpenSSL生成证书,iOS加密,java解密

    最近换了一份工作,工作了大概一个多月了吧.差不多得有两个月没有更新博客了吧.在新公司自己写了一个iOS的比较通用的可以架构一个中型应用的不算是框架的一个结构,并已经投入使用.哈哈 说说文章标题的相关的 ...

  6. Jvm 内存浅析 及 GC个人学习总结

    从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...

  7. 将DataTable中的某列转换成数组或者List

    string[] arrRate = dtRate.AsEnumerable().Select(d => d.Field<string>("arry")).ToA ...

  8. 程序员必须要知道的Hadoop的一些事实

    程序员必须要知道的Hadoop的一些事实.现如今,Apache Hadoop已经无人不知无人不晓.当年雅虎搜索工程师Doug Cutting开发出这个用以创建分布式计算机环境的开源软...... 1: ...

  9. 游走 bzoj 3143

    游走(2s 128MB)walk [问题描述] [输入格式] [输出格式] [样例输入] 3 3 2 3 1 2 1 3 [样例输出] 3.333 [样例说明] 题解: 主要算法:贪心:高斯消元: 题 ...

  10. Canvas讲解

    1.Canvas是什么? 简单地说canvas是画布,可以进行画任何的线.图形.填充等一系列的操作,而且操作的画图就是js, 提供简单的二维矢量绘图. 2.步骤: <canvas id=&quo ...