iOS设置和获取二维码扫描

//
//  Copyright  2016年 hjl. All rights reserved.
//

#import "HHQrcodeController.h"
#import <AVFoundation/AVFoundation.h>

@interface HHQrcodeViewController () <AVCaptureMetadataOutputObjectsDelegate>

/** 会话 */
@property (nonatomic, strong) AVCaptureSession *session;

//* 预览图层 */
@property (nonatomic, weak) AVCaptureVideoPreviewLayer *previewLayer;

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection;
@end

@implementation HHQrcodeViewController 

- (void)viewDidLoad {
    [super viewDidLoad];

    // 1. 实例化拍摄设备
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    // 2. 设置输入设备
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    // 3. 实例化拍摄元数据输出
    AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
    // 4. 设置输出数据代理
    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    // 5. 添加拍摄会话
    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    self.session = session;
    // 6. 添加会话输入/输出
    if ([session canAddInput:input]) {
        [session addInput:input];
    }
    if ([session canAddOutput:output]) {
        [session addOutput:output];
    }
    //7 设置输出数据类型,需要将元数据输出添加到会话后,才能指定元数据类型,否则会报错
    [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
    //8 实例化预览图层
    AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
    previewLayer.frame = self.view.bounds;
    self.previewLayer = previewLayer;
    //9 将图层插入当前视图
    [self.view.layer insertSublayer:previewLayer atIndex:0];
    //10 启动会话
    [_session startRunning];
}

#pragma 代理
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{

    //1 判断是否获取到数据
    if (metadataObjects.count > 0) {
        //2 停止刷新
        [self.session stopRunning];
        //3 移除预览图层
        [self.previewLayer removeFromSuperlayer];
        //4 读取数据
        AVMetadataMachineReadableCodeObject *obj = [metadataObjects lastObject];
        HHLog(@"%@", obj.stringValue);
    }
}
@end
时间: 2024-11-26 06:36:04

iOS设置和获取二维码扫描的相关文章

ios原生二维码扫描_IOS

做iOS的二维码扫描,有两个第三方库可以选择,ZBar和ZXing.今天要介绍的是iOS7.0后AVFoundation框架提供的原生二维码扫描. 首先需要添加AVFoundation.framework框架到你工程中build phase的"Link Binary With Libraries"之下,然后就可以开始了. 一.做好准备工作,搭建UI UI效果如图 IBOutlet.IBAction如下: @property (weak, nonatomic) IBOutlet UIVi

ios ZBar 二维码扫描。。。。

问题描述 ios ZBar 二维码扫描.... ld: warning: directory not found for option '-LZBarSDK' ld: '/Users/**/Documents/**/**/ios7 Scan QRCode/ZBarSDK-for-iOS-master/libzbar.a(ZBarReaderController.o)' does not contain bitcode. You must rebuild it with bitcode enabl

微信二维码扫描后跳转指定页面 如何获取扫描端用户的openid

问题描述 微信二维码扫描后跳转指定页面 如何获取扫描端用户的openid 如题如何,二维码生成用的是QrCode,里面放了一个地址.扫描后可以挑战到二维码中存储的那个地址. 请教一下.我跳转到我指定的请求地址的时候如何获取扫描用户的openid 解决方案 http://blog.csdn.net/fuyifang/article/details/40707517 解决方案二: 什么类型的微信号?认证过的服务号可以用通过网页授权获取,其他类型的实现就比较麻烦了 认证过的看这个:http://mp.

iOS中 基于LBXScan库二维码扫描 韩俊强的博客

首先声明这个二维码扫描是借助于zxing. 功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后面告诉你怎么修改. - 1.cocoaPods导入pod 'LBXScan', '~> 1.1.1' 导入方法看这: - 2.将JQScan文件夹拖到你的工程中(这个是写好的). //导入头文件 #import <LBXScanViewController.h> #import "SubLBXScanViewController.h" - (IBActi

ZPL指令TXT文本里设置QR code二维码为什么打印出来前三位扫描不出来?

问题描述 ZPL指令TXT文本里设置QR code二维码为什么打印出来前三位扫描不出来? 单机文本里编辑的指令 用Print.bat指定模板打印,二维码扫描是就前三位出不来,如下代码.如扫描只会出现456789012345,前面的123就没有了,还请高手指点下是为什么? ^XA ^LH40,180 ^MD13 ^LL1600 ^FO1,270^BQN,20,30^FD123456789012345^FS ^FO220,295^A0N,15,20^CI13^FR^FD123456789012345

iOS学习之二维码扫描

这几天刚好将本人高仿新浪微博的事情进行一个阶段性的tag,在此也将这个项目在实现二维码扫描这个功能来做一个简要的记录.关于高仿新浪微博的源代码,本人已经将全部代码托管到github,地址在这里.欢迎大家指正.接下来我们来看看QRCode扫描的实现. 关于二维码的扫描,网上说的最多的框架莫过于ZBar和ZXing框架,本人刚开始也是想使用第三方框架,但是,在iOS7之后苹果官方已经提供了二维码扫描方法,而且实现起来还是蛮简单的,故而选择原生态方法.不过,我们还是来看看,如何使用ZBar实现二维码扫

iOS中 基于LBXScan库二维码扫描

 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 首先声明这个二维码扫描是借助于zxing. 功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后面告诉你怎么修改.  - 1.cocoaPods导入pod 'LBXScan', '~> 1.1.1'  导入方法看这:  - 2.将JQScan文件夹拖到你的工程中(这个是写好的). <code class="language-Objective-C hljs objectivec

安卓-Androd 拍照有一个类似二维码扫描的框,拍照按钮后获取框里的图像,怎么实现?

问题描述 Androd 拍照有一个类似二维码扫描的框,拍照按钮后获取框里的图像,怎么实现? 拍照时弹出新的界面,像二维码那样有个框,需要按下拍照按钮才拍照, 拍照获取的只有被框住的图像? 是否有demo? 或者麻烦给个大概的代码 解决方案 http://download.csdn.net/detail/gao_chun/8698957 解决方案二: 拍完照后,按照你的选取框坐标进行图像抠图就可以了. 解决方案三: 有源码可以给你借鉴. 解决方案四: android入门:照相的边框 参考以下链接h

Android如何扫描获取二维码中的数据?

问题描述 Android如何扫描获取二维码中的数据? 我首先做了一个二维码名片,把信息输入进去以后生成了一个二维码,现在需要通过扫描这个二维码获取里面的信息中的电话号码信息,然后是一个发短信的过程.现在的问题就是如何扫描获得这个电话号码? 解决方案 参考:http://www.cnblogs.com/weixing/archive/2013/08/28/3287120.html 解决方案二: 建议你使用ZXing框架 解决方案三: android 二维码 扫描cocos2dx android 二