开源框架:ZXing

简介: 引言: 二维码的普及速度令人咋舌,现在随处的实体广告在边角处都附上一张二维码,提示用户扫描相关信息,了解更多,并且张小龙说,PC的入口在于搜索框,而手机的入口在于二维码.

引言:

二维码的普及速度令人咋舌,现在随处的实体广告在边角处都附上一张二维码,提示用户扫描相关信息,了解更多,并且张小龙说,PC的入口在于搜索框,而手机的入口在于二维码.

因为二维码解决了手机输入信息的困难.除了感叹人类的聪明之外,更多的是如何利用这已有的技术去满足我们在应用上面的需求.

当然了,内部算法不在本博文的介绍范围内,主要介绍如何使用它.




参考资料:

1:开博来的第一篇文贴:zxing2.0二维码在xcode4.2中的使用

http://blog.csdn.net/icash/article/details/7727299

2:ios中使用zxing遇到的问题

http://blog.csdn.net/zzfsuiye/article/details/8244917

3:让ZXing 支持条形码扫描

http://hi.baidu.com/397362542/item/a574ce39b267fdd12f8ec23b




如何安装:

1:ZXingWidget的托管地址如下:

http://code.google.com/p/zxing/downloads/list

2:关于库里的一些文件

不是所有的文件我们都用的到,

下载zxing2.0后,解压得到zxing-2.0文件夹,里面只保留  cpp  和 iphone 两个文件夹就可以了。


3:我比较用WorkSpace(工作空间)的方式引入第三方资源

那么有一步骤可以省去:

4:frameWorks添加如下几项:

libZXingWidget.a

AddressBook

AddressBookUI

AudioToolbox

AVFoundation

CoreMedia

CoreVideo

libiconv.dylib

完成后如下图:


5:不要忘记设置一个扫描成功时的音频文件:

widController.soundToPlay = [NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];

6:保持项目的C++混编译模式

首先请做如下操作:

1.请更改你的delegate文件的.m文件为.mm (请注意,如果你在项目中重命名,并不会使物理路径中的文件名被更改,所以请更改物理文件名)

MyZxingAppDelegate.m 改成 

 

MyZxingAppDelegate.mm

2.请更改你要使用zxing的项目文件的.m文件为.mm

MyZxingViewController.m 

改成 

 

MyZxing

ViewController

.mm



使用:

7:下载我的Demo 试试看:

XCode 4.6 iOS6.1 测试通过

Demo地址:猛击此处!



可能遇到的问题:

1.如果你项目中使用了zxing,但是在xcdoe升级到4.5以后出现Incompatible pointer types sending 'Class' (aka 'Class *') to parameter of type 'id<NSCopying>'错误,解决办法:重新下载更新版本的ZXing, 可以使用命令下载最新版本:svn checkout http://zxing.googlecode.com/svn/trunk/ zxing-read-only。

2.如果出现了问题Undefined symbols for architecture i386"std::string::c_str() const", referenced from。。。。,

将你项目中的Apple LLVM compiler 4.1 - language中的 c Language Dialect、c++ Language Dialect、c++ standard Library设置成下图所选的值。参考http://stackoverflow.com/questions/12665457/zxing-in-xcode-4-5-and-ios-6

3.编译成功往真机上装的时候出现Choose a destination with a supported architecture in order to run on this device ,由于ios设备不支持armv7s,所以必须将Architectures设置为armv6,但是仅仅需要改动valid architectures就行,不要改动architectures,否则容易引起真机不运行。把architectures改为$(ARCHS_STANDARD_32_BIT)就可以撞到手机上了。见http://blog.sina.com.cn/s/blog_90a0ad8d01013uuh.html

4:XCode 手贱升级到了 4.6  ZXingSDK  编译不过去了.

出现什么变量声明了没有使用的编译错误提示(可是明明使用了):

Member initializer 'bits_' does not name a non-static data member or base class

谷歌老外牛人多啊,或者说老外也遇到这个问题了,然后提问了,问答地址如下:

http://code.google.com/p/zxing/issues/detail?id=1494

里面说到将 ZXingWidget - BuildSettings - Other Warning Flags 里的 -Werror -Wno-unused-parameter 去掉,

但其实只要去掉 -Werror 就可以了, 如果 -Wno-unused-parameter  这个也去掉了会产生很多变量没有使用的警告.

此时可以编译通过了,烦恼的是  也有少许警告.




2014-02-18 16:03:17

番外篇ZXingObjC:

ZXingObjC通过名字即可知道它是干什么的,它是二维码扫描开源方面的又一力作,代码采用纯Objective-C实现,内存管理使用ARC,并且作者依旧在持续更新,那么在稳定和代码结构方面应该是优易于ZXing原本的实现.相比ZXing的使用和部署,ZXingObjC就简单很多,最关键的是,它还支持CocoaPods.那么安装起来就非常非常简单了.接下来一起来看看如何使用它.


如何安装:

ZXingObjC通过CocoaPods即可快速安装.



如何使用:



目录
相关文章
|
JavaScript 前端开发 API
【前端用法】jQuery在线引用地址(全)
【前端用法】jQuery在线引用地址(全)
3236 0
|
10月前
|
传感器 人工智能 边缘计算
当无人机遇上5G:远程控制再也不卡了
当无人机遇上5G:远程控制再也不卡了
428 8
|
9月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
10月前
|
传感器 存储 安全
基于STM32的智能送餐柜项目实战教程【开源免费】
随着智能餐饮和自动化服务的发展,智能送餐柜成为餐饮、企事业单位、校园食堂等场景的理想解决方案。本文将以STM32单片机为核心控制器,介绍一个完整的智能送餐柜设计方案,包括硬件架构、软件实现、功能设计以及优化思路,帮助开发者快速理解并实现类似项目。
|
并行计算 Ubuntu PyTorch
Ubuntu 18.04 + CUDA 11.3.0 + CUDNN 8.2.1 + Anaconda + Pytorch 1.10(下)
Ubuntu 18.04 + CUDA 11.3.0 + CUDNN 8.2.1 + Anaconda + Pytorch 1.10(上)
845 0
|
缓存 安全 Shell
【阿里云镜像】使用阿里云openssh镜像安装配置SSH服务
【阿里云镜像】使用阿里云openssh镜像安装配置SSH服务
1548 0
【阿里云镜像】使用阿里云openssh镜像安装配置SSH服务
|
数据采集 JavaScript Java
一款分布式爬虫管理平台,支持多种语言和框架
项目介绍 Crawlab —— 一个基于 Golang 的分布式爬虫管理平台,支持Python、NodeJS、Go、Java、PHP 等多种编程语言以及多种爬虫框架。 主要功能:
|
安全 数据安全/隐私保护 网络架构
什么是TACACS+协议?
【4月更文挑战第12天】
1387 2
|
人工智能 前端开发
【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent
【AI的未来 - AI Agent系列】【MetaGPT】2. 实现自己的第一个Agent
586 0