ZXing二维码扫描

一、  二维码

1.二维码名片

它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。

2.二维码分类

二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码。 堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成;矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”, 用“空”表示二进制“0”,“点”和“空”的排列组成代码。

二、  ZxingZBar

1,扫描二维码可以用Zxing或者Zbar(Zbar没有用过);Zxing这个项目中同时包含了Java和C#方面的支持,但是在iOS这块,Zxing只能扫描,不能生成;

2,ZXing可以直接扫二维码,如果要扫条形码,则需要去改改代码花点功夫了。ZBar也可以找到,但是据了解,ZBar的源码包含其他各平台的源码,代码较乱,ZBar的源码找起来比较费功夫。

3,Zxing需要注意中文的乱码问题

三、  Zxing配置问题

(1)Zxing最新下载地址是:http://code.google.com/p/zxing/downloads/list

 提示:注意下载的文件是十几兆的文件,Zxing目前最新版本为Zxing-2.1,此文档还是基于Zxing-2.0来说;

(2)解压下载过来的文件,只保留“cpp”“iPhone”这两个文件夹,因为里面包含有其他开发语言的SDK,我们只需要iOS方向的文件;

(3)拷贝这个文件夹到项目的根目录下:

(4)点击"File"选择“Add
filesto...”,在弹出的框中,找到:你的项目文件夹/zxing-2.0/iphone/ZXingWidget下面,选择"ZXingWidget.xcodeproj"(在添加前,先运行该项目,进行编译,如果成功,再进行此步添加!),并确保"Copy
itemsinto destination group’s folder (if needed)"不被选中。然后点添加。会出现一个框框;这个框框可以理解为项目的一个工作区域;

(5)添加库文件:Build Phases->”Link

 Binary With Libraries”->点击"+"。添加如下几项:

(1)libZXingWidget.a

(2)AddressBook

(3)AddressBookUI

(4)AudioToolbox

(5)AVFoundation

(6)CoreMedia

(7)CoreVideo

(8)libiconv.dylib

(6)Build Phases->Target Dependencies

(6)由于很多Zxing的代码还没有添加到我们的项目中,如文件夹“cpp”,我们需要找到他们所以我们需要添加一个路径:Build
Settings->
headersearch paths(可以搜索);然后双击header search paths,点“+”

添加的路径是:(1)"../zxing-2.0/cpp/core/src/"

(2)"../zxing-2.0/iphone/ZXingWidget/Classes"(注意双引号添加上去);

(7)现在编译,会出现;找不到文件,这是因为这Zxing是和C++的混编,所以需要把
.m文件的后缀改为 .mm;

四、  ZXing二维码扫描

(1)  在项目中需要实现Zxing的delegate,所以在 .h中需要添加<ZXingDelegate>

(2)  在扫描button的响应事件中,添加一下代码

  ZXingWidgetController *widController =     [[ZXingWidgetControlleralloc]
initWithDelegate:selfshowCancel:YESOneDMode:NO]; 

    QRCodeReader*qrcodeReader = [[QRCodeReaderalloc]
init]; 

NSSet *readers = [[NSSetalloc ]                                                initWithObjects:qrcodeReader,nil]; 

   [qrcodeReader release]; 

    widController.readers = readers; 

   [readers release];

    // 界面的跳转

   [self
presentModalViewController:widController    animated:YES]; 

[widControllerrelease];

(3)   在跳入ZXing的建立的窗口之后,ZXing正常扫描退出后,ZXing扫描有结果,会回调

- (void)zxingController:(ZXingWidgetController*)controller   didScanResult:(NSString *)result

       {

           self.resultsToDisplay = result; 

           if (self.isViewLoaded)

           { 

                      [m_resultsViewsetText:m_resultsToDisplay]; 

               } 

             [self
dismissModalViewControllerAnimated:NO]; 

       }

五、  Zxing条形码扫描

Zxing扫描条形码和二维码不一样,因为二维码和条形码扫描的实现不是在同一个类中,我们需要将二维码中的:

QRCodeReader *qrcodeReader = [[QRCodeReaderalloc]
init];

改为:

  MultiFormatOneDReader *oneReader = [[MultiFormatOneDReaderalloc]init];

要实现条形码的扫描,同时需要修改ZXing编写的一些代码;详细请参考   Zxing条形码.doc

注释:条形码和二维码可以同时写在一个Button的Action中,

   QRCodeReader *qrcodeReader = [[QRCodeReaderalloc]
init];

MultiFormatOneDReader *oneReader = [[MultiFormatOneDReaderalloc]init];

NSSet *readers = [[NSSetalloc ]
initWithObjects:qrcodeReader,oneReader,nil];

点击下载源码

时间: 2024-12-04 00:57:05

ZXing二维码扫描的相关文章

result-android开发遇到的关于Zxing二维码扫描结果怎样处理的问题

问题描述 android开发遇到的关于Zxing二维码扫描结果怎样处理的问题 如何把public void handleDecode(Result result, Bitmap barcode)得到的数据传递到一个未继承Activity 的类中 解决方案 直接在那个类中调用这个函数就可以了.

Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题_Android

先给大家展示下效果图: 扫描内容是下面这张,二维码是用zxing库生成的 由于改了好几个类,还是去年的事都忘得差不多了,所以只能上这个类的代码了,主要就是改了这个CaptureActivity.java package com.zxing.activity; import java.io.IOException; import java.util.Vector; import android.app.Activity; import android.content.Intent; import

Android Zxing二维码扫描图片拉伸问题的解决方法

还是这个接手项目,二维码扫描集成的是zxing,扫描界面的图像有明显的拉伸变形. 这种问题,根据以往的经验,一般是x,y轴错位引起的,处理好x,y轴的问题,一般可以解决问题. 由于这个问题,之前有很多人遇到,并分享在网上了,所以,我这里也就不需要重复造轮子了. 这里看了一篇博客:Android Zxing二维码扫描图片拉伸,用了上面的办法, 成功的解决图片拉伸问题. 解决方法如下: 修改CameraConfigurationManager.Java里面的initFromCameraParamet

Android zxing二维码扫描 扫描框适应各种分辨率

在使用zxing二维码时,发现有时候出现拉伸的现象,不能很好的适应各种分辨率,经过测试,只要在CameraManager.java中,修改一下如下方法即可,代码如下: public synchronized Rect getFramingRect() { if (framingRect == null) { if (camera == null) { return null; } Point screenResolution = configManager.getScreenResolution

Android Zxing二维码扫描图片拉伸的解决方法

二维码扫描,Android Zxing图片拉伸解决. Zxing是google提供的二维码扫描工程 默认是横屏的  转换成竖屏后图片出现拉伸 这里提供解决办法: Zxing 修改 CameraConfigurationManager.Java文件的void initFromCameraParameters(Camera camera)方法 在Log.d(TAG, "Screen resolution: " + screenResolution);这句之后增加 Point screenR

Android基于google Zxing实现各类二维码扫描效果_Android

随着微信的到来,二维码越来越火爆,随处能看到二维码,比如商城里面,肯德基,餐厅等等,对于二维码扫描我们使用的是google的开源框架Zxing,我们可以去http://code.google.com/p/zxing/下载源码和Jar包,之前我项目中的二维码扫描功能只实现了扫描功能,其UI真的是其丑无比,一个好的应用软件,其UI界面也要被大众所接纳,不然人家就不会用你的软件啦,所以说应用软件功能和界面一样都很重要,例如微信,相信微信UI被很多应用软件所模仿,我也仿照微信扫描二维码效果进行模仿,虽然

android-安卓开发 有关二维码扫描的问题

问题描述 安卓开发 有关二维码扫描的问题 项目分不同的模块 怎么样能实现 从不同的模块点进去 扫码出来的布局文件不一样 怎么样判断呢 解决方案 在开启扫描二维码activity时 ,如果 判断是来自哪个模块不行吗?Intent里 有一个变量ScanerFrom 标示哪个模块,根据不同模块显示设置不同的setContentView();就可以吧 ,刚入门 不是很懂 解决方案二: 你好,看不太懂能描述详细一点吗? 解决方案三: 你跳转界面的时候加入参数,然后在扫码的界面做判断就行了呗... 解决方案

图片-二维码扫描的问题 java

问题描述 二维码扫描的问题 java 手机扫描二维码 没有跳转到我二维码嵌入的url ,成文本状态,我是用手机访问本地的服务(我嵌入的url) 解决方案 关键是你的二维码上不能有"测试二维码:"之类的多余字符,以及回车,必须是一个纯的url. 解决方案二: 解决方案三: 你的链接有两个问题,第一,它不是一个合法的url,冒号和斜杠必须转义.其次它访问的是一个私有网络的地址,手机访问localhost肯定是访问不到的.因为它是本地ip.你的手机上又没有网站. 解决方案四: 关于zxing

Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现很多朋友都有介绍二维码扫描的功能,然后我就跟着人家的介绍自己搞起了二维码扫描功能,跟着人家的帖子,很快我的项目就加入了扫描