开源框架: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即可快速安装.



如何使用:



目录
相关文章
|
XML 缓存 JSON
Android开发常用开源框架
Android开发常用开源框架
Android开发常用开源框架
|
SQL JSON C#
C#开源框架
原文:C#开源框架 Json.NET  http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。
1564 0
|
Java Spring 容器
Google Guice 3.0开发
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/58049192 Google Guice 3.0开发 作者:chszs,未经博主允许不得转载。
1286 0
|
机器学习/深度学习 算法 TensorFlow
Google开源框架之MNIST入门
Google开源框架之MNIST入门 本博客基于google开源框架tensorflow所做的笔记,便于以后参考。这段代码放在github中github/hadxu。
1042 0
|
Java
基于Java的JFinal框架快速上手
http://finalshares.com/read-737
1146 0
|
算法 数据库 Android开发
几个开源框架的比较
    1、volley  项目地址 https://github.com/smanikandan14/Volley-demo (1)  JSON,图像等的异步下载;  (2)  网络请求的排序(scheduling)  (3)  网络请求的优先级处理  (4)  缓存  (5)  多级别取消请求  (6)  和Activity和生命周期的联动(Activity结束时同时取
1567 0
|
XML Java 数据格式
JFinal开发环境搭建,JFinal开发案例
 JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java 语言所有优势的同时再拥有 ruby、python、php 等动态语言的开发效率! JFinal 有如下主要特点:l  MVC 架构,设计精巧,使用简单l  遵循 COC 原则,零配置,无 xmll  独
2120 0
|
Oracle 关系型数据库 Java
jfinal框架教程-学习笔记(二)
上一节介绍了jfinal框架的简单搭建,这节通过一个小例子了解jfinal的结构和特点 先上图 1、建数据库(我用的是oracle数据库,其他的相对也差不多) -- Create table create table CLASSES ( classesid NUMB...
1266 0