IOS7原生API進行二維碼條形碼的掃描

//session

//  ViewController.mide

//  IOS7原生API進行二維碼條形碼的掃描測試

//編碼

//  Created by 崔曉宇 on 15/12/30.spa

//  Copyright © 2015 崔曉宇. All rights reserved..net

//線程


//須要真機3d

#import "ViewController.h"代理

#import <AVFoundation/AVFoundation.h>rest


@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>//用於處理採集信息的代理

{

    AVCaptureSession * session;//輸入輸出的中間橋樑

}

@end

@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    //獲取攝像設備

    AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    //建立輸入流

    AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];

    //建立輸出流

    AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutput alloc]init];

    //設置代理 在主線程裏刷新

    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

    

    //初始化連接對象

    session = [[AVCaptureSession alloc]init];

    //高質量採集率

    [session setSessionPreset:AVCaptureSessionPresetHigh];

    

//    1、這個CGRect參數和普通的Rect範圍不太同樣,它的四個值的範圍都是0-1,表示比例。

//    2、通過測試發現,這個參數裏面的x對應的偏偏是距離左上角的垂直距離,y對應的是距離左上角的水平距離。

//    3、寬度和高度設置的狀況也是相似。

//    3、舉個例子若是咱們想讓掃描的處理區域是屏幕的下半部分,咱們這樣設置

//    output.rectOfInterest=CGRectMake(0.5,0,0.5, 1);

    

    [session addInput:input];

    [session addOutput:output];

    //設置掃碼支持的編碼格式(以下設置條形碼和二維碼兼容)

    output.metadataObjectTypes=@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code];

    

    //建立攝像頭顯示圖層

    AVCaptureVideoPreviewLayer * layer = [AVCaptureVideoPreviewLayer layerWithSession:session];

    layer.videoGravity=AVLayerVideoGravityResizeAspectFill;

    layer.frame=self.view.layer.bounds;

    [self.view.layer insertSublayer:layer atIndex:0];

    //開始捕獲

    [session startRunning];

}


#pragma mark 信息捕獲代理方法

-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{

    if (metadataObjects.count>0) {

        //[session stopRunning];

        AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex : 0 ];

        //輸出掃描字符串

        NSLog(@"%@",metadataObject.stringValue);

    }

}


@end

相關文章
相關標籤/搜索