- 引入第三方框架AVFoundation.framework,签订协议AVCaptureMetadataOutputObjectsDelegate;
- 设置属性;
- 实现开始扫描读取的方法
3.1初始化捕捉设备(AVCaptureDevice),类型为AVMediaTypeVideo;
AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
3.2用captureDevice创建输入流;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];
if (!input) {
NSLog(@”%@”, [error localizedDescription]);
return NO;
}
3.3创建媒体数据输出流;
AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
3.4实例化捕捉对象;
_captureSession = [[AVCaptureSession alloc] init];
3.4.1将输入流添加到对话;
3.4.2将媒体输出流添加到会话中;
3.5创建串行队列,并将媒体输出流添加到队列当中;
dispatch_queue_t dispatchQueue;
dispatchQueue = dispatch_queue_create(“myQueue”, NULL);
3.5.1设置代理;
3.5.2设置输出媒体数据类型为QRCode;
3.6实例化预览图层;
3.7设置预览图层填充方式;
3.8设置图层的frame;
3.9将图层添加到预览view的图层上;
3.10设置扫描范围;
3.10.1扫描框;
3.10.2提示lable;
3.10.3扫描线;
3.11 开始扫描;
[_captureSession startRunning]; - 设置焦距;
- (void)setFocalLength:(CGFloat)lengthScale
{
[_videoPreviewLayer setAffineTransform:CGAffineTransformMakeScale(lengthScale, lengthScale)];
_connection.videoScaleAndCropFactor = lengthScale;
}
- (void)setFocalLength:(CGFloat)lengthScale
- 实现AVCaptureMetadataOutputObjectsDelegate协议方法;
- (void)captureOutput:(AVCaptureOutput )captureOutput didOutputMetadataObjects:(NSArray )metadataObjects fromConnection:(AVCaptureConnection *)connection
- 实现计时器方法;
- 停止读取;
二维码扫描实现
最新推荐文章于 2023-03-10 10:25:52 发布