IOS --自带二维码扫描
2019独角兽企业重金招聘Python工程师标准>>>
具体的可以参考这篇文章:http://www.appcoda.com/qr-code-ios-programming-tutorial/
最近由于公司项目需要,我负责二维码的生成和扫描部分。由于苹果规定自2015/02/01后上架的作品必须支持64位,所以经过综合比较后,二维码的扫描部分我决定采用苹果自带的AVFoundation框架来实现扫描,网上有很多关于ZBar和Zxing的例子,有兴趣的朋友可以去研究下。
1.使用前先加入框架头文件和代理信息,如下:
#import <AVFoundation/AVFoundation.h>
@interface QRCodeViewController : UIViewController<AVCaptureMetadataOutputObjectsDelegate>
2.用到如下几个类
@property (strong,nonatomic) AVCaptureDevice *device;
@property (strong,nonatomic) AVCaptureDeviceInput *input;
@property (strong,nonatomic) AVCaptureMetadataOutput *output;
@property (strong,nonatomic) AVCaptureSession *session;
@property (strong,nonatomic) AVCaptureVideoPreviewLayer *preview;
3.具体用法如下
//Devicedevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];//Inputinput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];//判断是否有输入if (!input){NSLog(@"error info:%@",[error localizedDescription]);return NO;}//Sessionsession = [[AVCaptureSession alloc] init];[session setSessionPreset:AVCaptureSessionPresetHigh];[session addInput:input];//Outputoutput = [[AVCaptureMetadataOutput alloc] init];[session addOutput:output];[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];//条码类型[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];//preview,扫描区域preview = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];[preview setVideoGravity:AVLayerVideoGravityResizeAspectFill];//设置扫描区域[preview setFrame:frameView.layer.bounds];//将扫描view放在self.frameView上[self.frameView.layer addSublayer:preview];//Start[session startRunning];
4.扫描到二维码后的操作,扫描到二维码之后就会调用如下方法
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{NSString *stringValue;if (metadataObjects !=nil && [metadataObjects count] >0){AVMetadataMachineReadableCodeObject *metadataObject = [metadataObjects objectAtIndex:0];//判断取到的对象类型if ([[metadataObject type] isEqualToString:AVMetadataObjectTypeQRCode]){[scanResult performSelectorOnMainThread:@selector(setText:) withObject:[metadataObject stringValue] waitUntilDone:NO];stringValue = [metadataObject stringValue];NSLog(@"扫描结果:%@",stringValue);// //直接跳往处理二维码controller
// ProcessRQViewController *processRQViewController = [[ProcessRQViewController alloc] init];
// //将取到的二维码的值传过去
// processRQViewController.RQResult = stringValue;
// //[self.navigationController pushViewController:processRQViewController animated:true];
// [self presentViewController:processRQViewController animated:YES completion:NULL];// //直接跳往下载图片的页面
// ProcessImageViewController *processImageViewController = [[ProcessImageViewController alloc] init];
// //将取到的二维码的值传过去
// processImageViewController.ImageResult = stringValue;
// //跳转
// [self presentViewController:processImageViewController animated:YES completion:NULL];
}
5.至此结束
本人亲测,好多二维码都可以扫描出来。但是在2月13号这天,项目经理让我用这个app扫描本公司营业执照二维码的时候,只能扫出营业执照前面的数字(本公司的营业执照:数字(一连串)+空一格+汉字(好几个)+空一格+一个连接地址)。找出bug后来不及修改,就直接过年了,如今过年来了,要及时堵住这个bug了。
转载于:https://my.oschina.net/u/2312022/blog/380005
IOS --自带二维码扫描相关推荐
- iOS 自带二维码扫描功能的实现
#自从iOS7以后中新增了二维码扫描功能.因此可以在不借助第三方类库的情况下简单的写出二维码的扫描功能: 原生的二维码扫描功能在AVFoundation框架下,所以在使用原生的二维码扫描功能时要先导入 ...
- iOS原生实现二维码扫描
iOS原生实现二维码扫描 最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时 ...
- iOS AV Foundation 二维码扫描 02 扫码
AVFoundation支持以下一维和二维码的扫描: QR code Aztec EAN13 EAN8 UPC-E PDF417 Code 93 Code 39 Code 39 mode 41 QR ...
- iOS:源生二维码扫描和制作
MMScanner:iOS源生二维码扫描和制作工具,轻量级UI,UI也可根据属性自行修改.支持条形码扫描以及识别图片中的二维码,制作二维码可以指定颜色.大小.可嵌入logo. 使用 pod " ...
- ios客户端学习-二维码扫描和应用跳转
转载至链接:http://sindrilin.com/ios-dev/2015/11/01/二维码扫描和应用跳转.html 序言 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如Z ...
- iOS 7原生二维码扫描中文gbk编码乱码的解决
有的二维码生成的含有中文的数据编码是GBK编码,如百度二维码生成器,使用系统原生二维码扫描就会出现乱码,于是开始网上查阅,该试的方法都尝试过了,终于功夫不负有心人,问题得到了解决,先上代码 NSStr ...
- 在IOS上实现二维码扫描
如今二维码随处可见,无论是实物商品还是各种礼券都少不了二维码的身影.而手机等移动设备又成为二维码的一个很好的应用平台,不管是生成二维码还是扫码二维码. 下面介绍一下如何在苹果iOS设备上使用二维码: ...
- iOS 自带二维码识别(识别二维码,条形码以及从相册中选择图片进行识别)
一:初始化 //扫描区域 UIImage *hbImage=[UIImage imageNamed:@"pick_bg"]; UIImageView * scanZomeBack= ...
- 发票二维码扫描增强_01_问题分析
问题概述 目前开发的App中涉及到以下场景:基于纸质发票的二维码扫描结果,调用国税总局的查询接口,获取发票的票面信息并自动构建对应的报销单 发票二维码中包含以下信息: 01,04,3200172320 ...
最新文章
- 世界机器人大会|人工智能VS人类
- PYTHON——数据存储:MySQL数据库
- 第2周第4课:set_uid、set_gid、stick_bit、软(硬)链接文件
- You have new mail
- Linux引导过程与服务控制、排障演示及运行级别(详细图解)
- 1.给定区间的二分查找
- java运用ascii实现动画效果_安卓开发20:动画之Animation 详细使用-主要通过java代码实现动画效果...
- GaussDB(DWS)应用实践丨负载管理与作业排队处理方法
- java打印插件_java c/s项目中有没有好用的打印插件?
- assert()和panic()
- 关于如何将多个Cpp文件关联起来
- php 过滤微信符号昵称,PHP处理微信昵称特殊符号过滤的方法
- Oracle隐含参数查看
- 用Vue.js做了一个九宫格图片展示模块(可点击进行缩放)
- 【思维进阶】《高效能人士的七个工作习惯》读书笔记
- ASCII码作用简介
- 苹果手机iframe撑大父页解决办法
- 浅谈3D网游引擎变迁史 看国产游戏引擎趋势
- 干货 | Logstash自定义正则表达式ETL实战
- Python爬虫小结(转)