使用AVCaptureSession扫描二维码

使用AVCaptureSession扫描二维码

在公司的项目里面有扫描二维码的需求,都是使用的ZBar,不过其实在iOS中也提供了二维码的扫描功能,而且速度那是相当的快,以前其实也写过这个功能,正好今天没什么事,就把使用AVCaptureSession扫描二维码的方法纪录下来,其实很简单,不过还是有一点需要注意的。

AVCaptureSession简介

iOS提供的这一系列的类的功能实在强大,不过我还没有仔细研究过,就我目前已知道的功能,比如各种条码,声音录制,视频录制等。今天要说的扫描二维码就是AVCaptureSession中扫描条码的一个小功能,使用超级简单,代码量很少。

步骤简介

使用这个类,基本只需要以下几个步骤:
1. 权限检查
2. 创建AVCaptureSession
3. 添加输入源
4. 添加输出
5. 添加预览图层
6. 开始捕捉
7. 结束捕捉

下面将按这个顺序一一说明。

扫描二维码

权限检查

在进行二维码扫描之前,最好是先对权限进行检查,如下所示:

AVAuthorizationStatus authStatus =  [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

如果authStatus的结果是AVAuthorizationStatusAuthorized,说明摄像头服务是可以使用的。就可以进行接下来的步骤了。如果authStatus的结果是AVAuthorizationStatusNotDetermined,则需要请求权限,使用如下代码来请求摄像头使用权限:

[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
            if(granted == NO);
                <#Your Code Next Operation if Not Granted#>
        }];

创建AVCaptureSession实例

AVCaptureSession是第一个要被创建的对象,所有的操作都要基于这一个session。创建它并没有什么特别的方法,使用init方法就可以。

captureSession = [[AVCaptureSession alloc] init];

添加输入源

输入源对应的类是AVCaptureInput,该类是一个抽象类,不能被直接实例化,在实际使用中,都是使用他的子类,比如AVCaptureDeviceInput,AVCaptureScreenInput(只能用于Mac),

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值