iOS二维码扫描
来源:互联网 发布:bcg矩阵是什么意思 编辑:程序博客网 时间:2024/06/05 10:26
每一步:添加 AVFoundation.framework 库
General > Linked Frameworks and Libraries
第二步:实现代码
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>
/** 2.输入设置采集摄像头捕捉到的信息 */
@property (nonatomic,strong) AVCaptureDeviceInput *input;
/** 3.输出设备解析输入设备采集到的信息 */
@property (nonatomic,strong) AVCaptureMetadataOutput *output;
/** 4. layer (特殊图层能够展示摄像头采集到的画面)展示输入设备采集到的信息 */
@property (nonatomic,strong) AVCaptureVideoPreviewLayer *layer;
/** 5.关联输入设备和输出设备会话 */
@property (nonatomic,strong) AVCaptureSession *session;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
// 点击扫描二维码
- (IBAction)click:(id)sender {
// 1.创建输入设备
// AVMediaTypeVideo 摄像头
// AVMediaTypeAudio 麦克风
// AVCaptureDeviceInput 输入设备 default默认后置
// AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSArray *allDevice = [AVCaptureDevicedevicesWithMediaType:AVMediaTypeVideo];
self.input = [AVCaptureDeviceInputdeviceInputWithDevice:[allDevicefirstObject] error:nil];
//2. 创建输出设备
self.output = [[AVCaptureMetadataOutputalloc]init];
//解析返回的数据
//设置输出设备的代理返回解析后的数据
[self.outputsetMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];
//3.创建会话
self.session = [[AVCaptureSessionalloc]init];
//4.关联会话和设备
if ([self.sessioncanAddInput:self.input]) {
[self.sessionaddInput:self.input];
}
if ([self.sessioncanAddOutput:self.output]) {
[self.sessionaddOutput:self.output];
}
//告诉数据类型 AVMetadataObjectTypeQRCode二维码
self.output.metadataObjectTypes = @[AVMetadataObjectTypeQRCode];
// 扫描框大小 整个屏幕
[self.sessionsetSessionPreset:AVCaptureSessionPreset640x480];
//5.指定layer的 frame 然后添加到 view上
self.layer = [[AVCaptureVideoPreviewLayeralloc]initWithSession:self.session];
self.layer.frame =self.view.bounds;
[self.view.layeraddSublayer:self.layer];
//开启会话
[self.sessionstartRunning];
}
//扫描出结果后就会调用的代理方法方法
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{
AVMetadataMachineReadableCodeObject *objc = [metadataObjectsfirstObject];
NSString *str = objc.stringValue;
NSLog(@"%@",str);
//停止扫描
[self.sessionstopRunning];
//移除 layer
[self.layerremoveFromSuperlayer];
}
@end
- iOS-二维码扫描
- iOS 二维码,条形码扫描
- IOS 7 扫描二维码
- iOS二维码扫描
- IOS扫描二维码条形码
- ios扫描二维码方法
- iOS原生二维码扫描
- IOS二维码 扫描
- iOS二维码扫描
- iOS扫描二维码
- iOS 原生二维码扫描
- iOS二维码扫描
- iOS:原生二维码扫描
- iOS zbar扫描二维码
- iOS原生二维码扫描
- iOS扫描二维码
- iOS原生扫描二维码
- ios原生二维码扫描
- 《Python学习手册》学习笔记(10)之第10章Python语句简介(关键词:编程语言/Python/语句)
- Django第一天笔记
- U3D资源加载
- 欢迎使用CSDN-markdown编辑器
- 堆内存分配
- iOS二维码扫描
- 《Python学习手册》学习笔记(11)之第11章赋值、表达式和打印(关键词:编程语言/Python/赋值/表达式/打印)
- linux-image-3.19.0-66-generic造成dkpg无法正常工作的问题
- Java学习之基础训练三-----猜字符小游戏(自定义函数,在main函数中调用)
- Good Numbers
- ArrayList JDK9源码解读
- poj1236 Network of Schools (Targan强连通图缩点)
- 1.前端之路-一个能进行2d缩放旋转的小东西
- opencv是什么