使用zbar进行二维码或条形码(一维码)扫描
来源:互联网 发布:提高环境监测数据质量 编辑:程序博客网 时间:2024/05/16 09:21
接上篇,因为使用AVFoundation一直无法扫描我们的二维码,最后决定使用条形码。我又在AVCaptureMetadataOutput的metadataObjectTypes中加入了EAN13的条形码类型(我们生成条形码使用的类型),不幸的是,还是无法识别,但是,百度其他的EAN13类型的条形码都可以识别出来,此问题仍未解决。
最后,我决定试一下ZBar,bingo!效率挺高。下面介绍一下zbar的使用过程。
首先,使用cocopods在项目中集成zbar,然后在头文件中导入ZBarSDK,因为我需要自定义扫描界面,所以使用ZBarReaderView,如下:
其中scanCrop是设置有效区域的一个属性,相当于
AVCaptureMetadataOutput中的rectOfInterest(具体信息可查看我的上一篇博客),其他属性不再赘述。
下面说一下在使用zbar过程中遇到的问题:
1.在使用AVFoundation时,配置各个类的实例变量时需要使用异步线程防止阻塞主线程加载界面。在使用zbarreaderview时,如果不用异步线程也会出现阻塞,但是,如果使用异步线程的话,会出现一个问题:进入扫码界面到出现镜头过程中需要等待一段时间,并且这段时间会随着进入这个界面的次数增加而增长,我发现问题在ZBarReaderView的实现文件ZBarReaderViewImpl的_initWithImageScanner方法中self.device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];方法,但是问题还是没能解决(我真是太菜了,还请大神能指点一二),因为等待时间实在是无法接受,我又想到了另外一种方法:把添加扫描视图的方法从viewDidLoad移到viewDidAppear中,然后在ViewWillAppear中添加一个loading视图,这样点击进入扫描视图的页面的按钮时不需要等待,进入后出现loading,直到加载完成展示扫描视图。由于业务需要,扫描完成后,进入下一个页面进行操作,之后可以选择再次进入扫描视图,所以会再次执行viewDidAppear就会多次加载扫描视图,为了解决这个问题,我是用一个全局变量来保证扫描视图只加载一次。具体代码如下:
2.使用zbar进行扫描时,首次进入页面会镜头会出现抖动,具体原因不明,未解决。
总结:至此,扫描功能也算能够使用了,但是,由于个人能力有限,业务一再退让,问题还有很多。希望看到这篇博客的朋友能够帮忙解决一下,不胜感激。路漫漫其修远兮~~~
- 使用zbar进行二维码或条形码(一维码)扫描
- Android使用ZBar扫描二维码/条形码(实例)+常见问题汇总
- Android使用ZBar扫描二维码/条形码(实例)+常见问题汇总
- ios-使用ZBar来扫描二维码/条形码
- 在iOS中使用ZBar扫描二维码和条形码
- 在iOS中使用ZBar扫描二维码和条形码
- iOS扫描二维码条形码ZBar的简单使用
- ZXing和ZBar扫描二维码、扫描条形码
- IOS开发(91)之ZBar 条形码二维码扫描控件
- 二维码扫描-zbar的使用
- iOS使用Zbar扫描二维码
- ios 使用ZBar读取条形码和二维码
- ios 使用ZBar读取条形码和二维码
- 使用zbar,来扫描各种条形码
- HTML页面中条形码或二维码扫描枪的使用
- 使用IOS7原生API进行二维码条形码的扫描
- 使用IOS7原生API进行二维码条形码的扫描
- 使用IOS7原生API进行二维码条形码的扫描
- ffmpeg音频转码(用filter重取样)
- android之关于反编译
- 【学习ARToolkit小记之初】 ARToolkit在VS2010(Win7 64位)下的配置及第一个开发程序的编译与运行
- AS Theme.Light.NoTitleBar dialog 背景色仍为黑色
- 游承超:自己动手贴手机膜,一样可以很舒心(22P)
- 使用zbar进行二维码或条形码(一维码)扫描
- MySQL数据库事务隔离级别(Transaction Isolation Level)
- Longest Substring Without Repeating Characters
- Decode Ways
- A股暴跌三日总市值蒸发4.2万亿 股民人均亏2万
- 关于内容为指针的vector对象的复制
- android 布局中 layout_gravity、gravity、orientation、layout_weight
- 堆排序
- 怎样拿FND log