//
// ViewController.m
// 扫描二维码
//
// Created by 高恒伟521 on 16/1/23.
// Copyright © 2016年 gds. All rights reserved.
//
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>
/**
* 输入设备
*/
@property(nonatomic,strong)AVCaptureDeviceInput *input;
/**
* 输出设备
*/
@property(nonatomic,strong)AVCaptureMetadataOutput *output;
/**
* 会话
*/
@property(nonatomic,strong)AVCaptureSession *session;
/**
* 展示内容的图层特殊的图层.给用户看的
*/
@property(nonatomic,strong)AVCaptureVideoPreviewLayer *preiewLayer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
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];
/**
* 特使的layer展示.初始化
*/
self.preiewLayer = [[AVCaptureVideoPreviewLayer alloc]initWithSession:self.session];
self.preiewLayer.frame = self.view.layer.bounds;
[self.view.layer addSublayer:self.preiewLayer];
//设置扫描的大小
[self.session setSessionPreset:AVCaptureSessionPresetHigh];
[self.session startRunning];
}
//解析完毕就会调用
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection {
AVMetadataMachineReadableCodeObject *object = [metadataObjects firstObject];
NSLog(@"%@",object.stringValue);
[self.preiewLayer removeFromSuperlayer];
[self.session stopRunning];
}
@end
生成二维码
最新推荐文章于 2023-11-21 11:24:34 发布