//
// ViewController.m
// SaoMiaoErWeiMa
//
// Created by hq on 16/5/16.
// Copyright 2016年 hanqing. All rights reserved.
//
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController () <AVCaptureMetadataOutputObjectsDelegate>
@property(nonatomic,weak) AVCaptureSession *session;
@property(nonatomic,weak) AVCaptureVideoPreviewLayer *layer;
- (IBAction)scan;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
//扫描二维码
- (IBAction)scan {
//创建捕捉会话
AVCaptureSession *session=[[AVCaptureSession alloc]init];
self.session=session;
//添加输入设备
AVCaptureDevice *device=[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input=[AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
[session addInput:input];
//添加输出数据
AVCaptureMetadataOutput *output=[[AVCaptureMetadataOutput alloc]init];
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[session addOutput:output];
//输出到是二维码数据,必须写在添加之后
[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
//添加扫描图层
AVCaptureVideoPreviewLayer *layer=[AVCaptureVideoPreviewLayer layerWithSession:session];
layer.frame=CGRectMake(0, 0, 300, 300);
[self.view.layer addSublayer:layer];
self.layer=layer;
//开始扫描
[session startRunning];
}
//通过代理获得扫描的数据
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{
if (metadataObjects.count>0) {
NSLog(@"扫描到数据");
//获取扫描到的数据
AVMetadataMachineReadableCodeObject *obj=[metadataObjects lastObject];
//停止扫描
[self.session stopRunning];
//移除我们的layer
[self.layer removeFromSuperlayer];
}
else{
NSLog(@"没有扫描到数据");
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
扫描二维码
最新推荐文章于 2025-01-08 15:34:50 发布
本文介绍了一个简单的iOS应用程序,用于实现二维码扫描功能。该应用利用AVFoundation框架创建视频捕捉会话并解析摄像头捕获的二维码数据。

3495

被折叠的 条评论
为什么被折叠?



