iOS:二维码扫描
来源:互联网 发布:godaddy域名转走 编辑:程序博客网 时间:2024/05/20 23:04
二维码(QRCode)的本质其实就是一个字符串,我们的最终目的就是将二维码图片转换成字符串.
首先导入AVFoundation框架
#import <AVFoundation/AVFoundation.h>
实例化有关二维码扫描的四个对象
@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>//输入设备 也就是摄像头@property(nonatomic, strong)AVCaptureDeviceInput *input;//输出的元数据@property(nonatomic, strong)AVCaptureMetadataOutput *output;//展示图层@property(nonatomic, strong)AVCaptureVideoPreviewLayer *preLayer;//会话(输入设备、输出的元数据和展示图层都需要与会话相关联)@property(nonatomic, strong)AVCaptureSession *session;@end
将输入设备、输出设备、展示图层与会话关联起来
AVCaptureDeviceDiscoverySession *discoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInWideAngleCamera] mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionBack]; //获取设备 也就是摄像头 这里只获取后置摄像头 NSArray *devices = discoverySession.devices; self.input = [[AVCaptureDeviceInput alloc]initWithDevice:[devices firstObject] error:nil]; self.output = [[AVCaptureMetadataOutput alloc]init]; self.session = [[AVCaptureSession alloc]init]; //将输入设备与会话关联 if ([self.session canAddInput:self.input]) { [self.session addInput:self.input]; } //将输出设备与会话关联 if ([self.session canAddOutput:self.output]) { [self.session addOutput:self.output]; } //设置输出设备的代理 [self.output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];// NSLog(@"%@",[self.output availableMetadataObjectTypes]); //输出元数据类型为二维码 self.output.metadataObjectTypes = @[AVMetadataObjectTypeQRCode]; //将展示图层与会话关联 self.preLayer = [[AVCaptureVideoPreviewLayer alloc]initWithSession:self.session]; self.preLayer.frame = self.view.bounds; [self.view.layer addSublayer:self.preLayer]; [self.session setSessionPreset:AVCaptureSessionPreset1920x1080]; [self.session startRunning];
输出设备代理方法
//解析完毕会调用这个方法- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection { AVMetadataMachineReadableCodeObject *objc = [metadataObjects firstObject]; //输出扫描结果 NSLog(@"%@",objc.stringValue); [self.preLayer removeFromSuperlayer]; [self.session stopRunning]; //后续对扫描出来的字符串进一步进行操作}
输出的字符串
0 0
- iOS-二维码扫描
- iOS 二维码,条形码扫描
- IOS 7 扫描二维码
- iOS二维码扫描
- IOS扫描二维码条形码
- ios扫描二维码方法
- iOS原生二维码扫描
- IOS二维码 扫描
- iOS二维码扫描
- iOS扫描二维码
- iOS 原生二维码扫描
- iOS二维码扫描
- iOS:原生二维码扫描
- iOS zbar扫描二维码
- iOS原生二维码扫描
- iOS扫描二维码
- iOS原生扫描二维码
- ios原生二维码扫描
- 算典03_习题_09_POJ-1936
- BZOJ2599: [IOI2011]Race 点分治
- 并不是很多重背包的多重背包(HDU - 2191 悼念汶川大地震。。
- 【GStreamer开发】GStreamer基础教程02——GStreamer概念
- ASP.NET MVC 5 (八) Visual Studio单元测试
- iOS:二维码扫描
- Java获取数据库表列信息、索引信息、存储过程等信息
- 技术宅找女朋友的技术分析
- Ubuntu 16.04 LTS 部分汉字显示一半的问题修复
- 【操作系统 - 3】预防进程死锁的银行家算法
- TCP 选择性应答的性能权衡
- 浅析Web历史
- 基于PopWindow+Listview实现弹窗选择的界面实现
- Windows apache虚拟主机配置