zoukankan      html  css  js  c++  java
  • IOS 二维码扫描

    这篇博客是对上篇博客的补充,内容较少。

    由于二维码扫描需要在真机上测试本人比较烂就不做效果图了。

    下面是代码(代码中已经写了很清楚的注释)

    //
    //  ViewController.m
    //  CX 二维码扫描
    //
    //  Created by ma c on 16/4/12.
    //  Copyright © 2016年 bjsxt. All rights reserved.
    //
    
    #import "ViewController.h"
    #import <AVFoundation/AVFoundation.h>
    @interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        
        
    }
    
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
        
        //创建捕捉会话
        AVCaptureSession * session = [[AVCaptureSession alloc]init];
        //添加输入设备
        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];
        //告诉元数据类型为二维码类型
        //注意该方法在add后 否则崩溃
        //测试需要真机稍有麻烦 就不截图了
        [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
        //添加扫描图层
        AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session];
        layer.frame = CGRectMake(10,20, self.view.frame.size.width, 400);
        [self.view.layer addSublayer:layer];
        //开始扫描
        [session startRunning];
        
        //下面的方法适当的时候操作
        //停止扫描
    //    [session stopRunning];
        //移除图层
    //    [layer removeFromSuperlayer];
    }
    - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{
        //metadataObjects 为扫描的后的数据
        
        AVMetadataMachineReadableCodeObject * objc = [metadataObjects lastObject];
        //我们想要的结果
        NSLog(@"%@",objc.stringValue);
    }
    @end
  • 相关阅读:
    SpringBoot项目设置maven打包时间
    SpringBoot热部署配置
    Git笔记
    SpringBoot LogBack日志配置
    CURL使用教程
    Linux 安装Docker及使用
    转发和重定向的区别
    16周作业
    16
    15周
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/5382328.html
Copyright © 2011-2022 走看看