使用ZXing开发二维码
2014-02-19 13:08
441 查看
下载ZXing
ZXing是一个开源的条码生成和扫描库(基于Apache2.0的开源协议),github地址是:https://github.com/zxing/zxing ,它支持多种语言:java,C++,Objective-C以及Ruby等。那么我们从github或者google
code上把源码下载下来。
裁剪目录
因为ZXing的源码包含众多语言,但是因为我们是在IOS项目中使用,所以需要进行裁剪以减小体积,只保留如下目录:zxing/cpp/core/src/zxing和zxing/iphone/ZXingWidget,这样儿,体积会小很多。简单说下,zixing/iphone目录下有三个目录,Barcodes:这个是一个完整的ZXing的IOS
App,可以在App Store里下载的到,ZXingWidget是一个我们可以引入的库,而ScanTest是ZXingWidget的一个简单demo app,当然,我们是要使用ZXing来做二维码开发,所以我们只需要保留ZXingWidget即可。
将ZXing集成到Xcode工程中
a. 将裁减后的zxing文件夹整个拷贝到我们的项目根目录下,然后将ZXingWidge.xcodeproj文件拖拽到我们的工程中,在弹出的对话框中选择Copy items。
b. 选中我们的xcode项目,选择Build Phases选项卡,然后增加 Target
Dependencies 和 Link binary,展开Target Dependencies,添加ZXingWidget,展开Link Binary With Libraries,增加如下framework依赖:
*libZXingWidget.a
* AVFoundation
* AudioToolbox
* CoreVideo
* CoreMedia
* libiconv
* AddressBook
* AddressBookUI
c. 再然后就是在Build Settings中设置header search paths:
./zxing/iphone/ZXingWidget/Classes 设置为循环查找
./zxing/cpp/core/src设置为非循环查找
使用方法
完成了上述步骤之后,我们就完成了在我们的项目中集成ZXing了,那么接下来就是在我们的项目中使用ZXing了,这里有两种方法,第一种使用简单,但可定制化程度低,第二种使用略微复杂,但具备高度可定制化,我们的教程里使用的是第一种较为简单的方式:
ZXing提供了一个扫描二维码的View Controller,即ZXingWidgetController。在需要使用的界面代码中,加入如下文件依赖:
[cpp] view
plaincopy
#import <ZXingWidgetController.h>
#import <QRCodeReader.h>
然后在需要扫描的地方,例如按下按钮扫描,添加如下代码:
[cpp] view
plaincopy
- (IBAction)scanPressed:(id)sender {
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
NSMutableSet *readers = [[NSMutableSet alloc ] init];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
[readers addObject:qrcodeReader];
[qrcodeReader release];
widController.readers = readers;
[readers release];
[self presentModalViewController:widController animated:YES];
[widController release];
}
一旦扫描有了结果,就会调用如下的回调函数:
[cpp] view
plaincopy
@protocol ZXingDelegate
- (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result;
- (void)zxingControllerDidCancel:(ZXingWidgetController*)controller;
@end
总结
确实没有什么特别高的难度,同时,官方的READ.md文件(位于iphone目录下)对于如何集成的步骤也说的特别详细,所以,不管是什么语言什么资料,官方的文档首先要学会看清楚。
题外话,最近几天在换工作了,诶,还是想好好做技术,但现在好像没有什么特别拿得出手的技能哈,可能打酱油时间过长了,anyway,想做点儿自己感兴趣的事儿,如果有合适的,跪求收留,嘿嘿。
ZXing是一个开源的条码生成和扫描库(基于Apache2.0的开源协议),github地址是:https://github.com/zxing/zxing ,它支持多种语言:java,C++,Objective-C以及Ruby等。那么我们从github或者google
code上把源码下载下来。
裁剪目录
因为ZXing的源码包含众多语言,但是因为我们是在IOS项目中使用,所以需要进行裁剪以减小体积,只保留如下目录:zxing/cpp/core/src/zxing和zxing/iphone/ZXingWidget,这样儿,体积会小很多。简单说下,zixing/iphone目录下有三个目录,Barcodes:这个是一个完整的ZXing的IOS
App,可以在App Store里下载的到,ZXingWidget是一个我们可以引入的库,而ScanTest是ZXingWidget的一个简单demo app,当然,我们是要使用ZXing来做二维码开发,所以我们只需要保留ZXingWidget即可。
将ZXing集成到Xcode工程中
a. 将裁减后的zxing文件夹整个拷贝到我们的项目根目录下,然后将ZXingWidge.xcodeproj文件拖拽到我们的工程中,在弹出的对话框中选择Copy items。
b. 选中我们的xcode项目,选择Build Phases选项卡,然后增加 Target
Dependencies 和 Link binary,展开Target Dependencies,添加ZXingWidget,展开Link Binary With Libraries,增加如下framework依赖:
*libZXingWidget.a
* AVFoundation
* AudioToolbox
* CoreVideo
* CoreMedia
* libiconv
* AddressBook
* AddressBookUI
c. 再然后就是在Build Settings中设置header search paths:
./zxing/iphone/ZXingWidget/Classes 设置为循环查找
./zxing/cpp/core/src设置为非循环查找
使用方法
完成了上述步骤之后,我们就完成了在我们的项目中集成ZXing了,那么接下来就是在我们的项目中使用ZXing了,这里有两种方法,第一种使用简单,但可定制化程度低,第二种使用略微复杂,但具备高度可定制化,我们的教程里使用的是第一种较为简单的方式:
ZXing提供了一个扫描二维码的View Controller,即ZXingWidgetController。在需要使用的界面代码中,加入如下文件依赖:
[cpp] view
plaincopy
#import <ZXingWidgetController.h>
#import <QRCodeReader.h>
然后在需要扫描的地方,例如按下按钮扫描,添加如下代码:
[cpp] view
plaincopy
- (IBAction)scanPressed:(id)sender {
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
NSMutableSet *readers = [[NSMutableSet alloc ] init];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
[readers addObject:qrcodeReader];
[qrcodeReader release];
widController.readers = readers;
[readers release];
[self presentModalViewController:widController animated:YES];
[widController release];
}
一旦扫描有了结果,就会调用如下的回调函数:
[cpp] view
plaincopy
@protocol ZXingDelegate
- (void)zxingController:(ZXingWidgetController*)controller didScanResult:(NSString *)result;
- (void)zxingControllerDidCancel:(ZXingWidgetController*)controller;
@end
总结
确实没有什么特别高的难度,同时,官方的READ.md文件(位于iphone目录下)对于如何集成的步骤也说的特别详细,所以,不管是什么语言什么资料,官方的文档首先要学会看清楚。
题外话,最近几天在换工作了,诶,还是想好好做技术,但现在好像没有什么特别拿得出手的技能哈,可能打酱油时间过长了,anyway,想做点儿自己感兴趣的事儿,如果有合适的,跪求收留,嘿嘿。
相关文章推荐
- 黑马程序员_JAVA 学习笔记19 WEB篇6
- c/c++对齐规则
- 使用LDAP(ApacheDS)构建统一认证服务(SSO单点登录)
- 迪杰斯特拉初级练习
- C++之面向对象(上)
- 11个高效的VS调试技巧
- 黑马程序员_JAVA 学习笔记18 WEB篇5
- Hibernate 入门简介
- java web.xml配置详解(转)
- 使用原始的XML资源
- 引发类型为“System.OutOfMemoryException”的异常。
- allegro里的重用功能-reuse
- FieldOffset
- android----ToggleButton&Switch
- 不敢留下运行结果的人能回复下吗?(坏笑)
- rhcs 集群相关记录
- Linux内存初始化:bootmem到buddy的过渡
- java 开源 cms FreeCMS1.6发布
- C/C++中extern关键字详解
- 关于指针的解释