1.下载ZXing库
首先需要一个ZXing库和Core Jar包 。
ZXing库: https://github.com/zxing/zxing 。
Core Jar包 :http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/core-3.2.1.jar 。
主要是用红框那两个包,而core包你可以编译成jar包或者用我上面那个jar包链接下载。
2.接入
在你项目中,File -> New -> Import Module 把刚下载的android包添加进入 。
其实现在是两个项目,为了区别是依赖库,首先在File -> Project Strcture -> 在Module选择自己的项目 Dependencies ->加上Module Dependency ,然后在ZXing的build.gradle下第一行改成如下,还有把下面的 applicationId那行删掉。
修改前
apply plugin: 'com.android.application'。
修改后
apply plugin: 'com.android.library'。
然后会报一堆红色错误,这是正常的。下一步是把Core Jar包导入ZXing,在ZXing创建一个libs文件夹,把Core Jar放进去,然后右键 As Add Library。
错误已经没了一半,接下来发现会少一个CameraConfigurationUtils类,这个就是刚才在android-core下的那一个类,把它拖到camera包下就好了。
接下来的错误都能Alt+Enter解决,把Switch改成if else。到这步不行的同学可以试试移除Module再试试。
运行时就会报Execution failed for task ‘app:processDebugManifest’,只要自己项目的AndroidManifest.xml文件 application标签加上 tools:replace=”icon,theme”,然后alt+Enter导入命名空间就好了。
3.使用
在自己的项目中startActivity CaptureActivity 就可以了。
返回的数据在这行代码里面。
CharSequence displayContents = resultHandler.getDisplayContents();。
至于横屏改为竖屏,在AndroidManifest.xml文件的CaptureActivity 改一下就好了。
android:screenOrientation="portrait"。
方法一:Android studio引入了grandle,导入第三方库需要在里面配置。将zxing解压后把Httpzoid目录copy到你项目的目录下,添加后android studio的项目下会自动出现这个目录,然后进行grandle配置,具体可以去百度搜一下很多。
方法二:导入zxing库的jar包:在libs文件夹和添加的*.jar文件下鼠标单击菜单 add as library。
打开App目录下有个build.gradle文件应该项目结构文件,上述的动作只是为了在在文件下添加。其实Android studio本身自带。
的库挺多,选择项目单击Open Module Settings,在Dependencies中,点击右边绿色加号,搜索zxing选择添加文件。
dependencies {
compile files('libs/android-support-v13.jar')。
compile files('libs/zxing.jar')}。
方法三,猥琐点,把工程复制黏贴到自己的项目工程,把工程包名改,哈哈。
在android studio 中引入zxing方法如下:
1、下载源代码,导航栏,选择Downloads。
2、导入项目。解压下载的.zip文件,打开Eclipse,菜单栏,选择file -> new -> project...。
在弹出的New Project对话框中,选择Android -> Android Project from Existing Code,点击Next Root Directory文本框,点击Browse按钮,选择zxing/android文件夹,点击Finish即可。
本来zxing的c++部分不是为windows准备的,在windows中编译应该用mingw比较合适。但我不熟悉这个。今天试一下,似乎可以在VS2008编译。虽然有很多问题,不过都可以解决的。
大概有如下问题:
1。isnan, NAN, INFINITY, fmax等一些常量或函数找不到,这是linux与windows包含文件的差异。自己创建就行,我做在nan.cpp和nan.h之中。
2。文件同名:可以把那些文件编译到不同目录,这样就不会干扰了。默认是编译到同一个目录。
3。变长数组的语法:GCC支持变长的数组变量,比如。
void gcc(int len) {。
int data[len];
但VC不支持,所以很多地方都要改过来。我的做法是:查到它所有的调用之处,找一个比较大的数值来取代len。
4。iconv.h: 要下载:
http://gnuwin32.sourceforge.net/packages/libiconv.htm。
需要DLL和lib导入库。我上传的代码不用iconv。通过设置NO_ICONV,可以不需要libiconv,但是扫描结果也没有转换,需要调用方自己做字符集转换。
经过这些,应该可以编译了。
编译它的示例:
这要求有ImageMagick,直接下载一个安装,
安装完成后,新建一个windows控制台项目,导入示例,设置好ImageMagick和zxing头文件和库文件目录。编译后,运行。
我放在zxtest项目中。
根据示例,写pascal接口,这部分代码放在ZXingDLL中。
通过分析,LuminanceSource应该是一个zxing分析图像的接口,要从这个派生出来一个类才能让zxing工作。示例是用MagickBitmapSource ,它用了ImageMagick库,太大,所以我分析了源码,发现只要输出灰度就行了,这样我在DELPHI中获取图像,然后转成灰度图,再转进来。具体看我的DELPHI和lazarus代码。
因为这个zxing的库是属于library,如果你复制到项目中以后,会有缓存问题。
你可以先clean一下项目,将缓存文件清除。
建议使用Android Studio做开发工具,Android studio是基于Intellij IDEA专门为安卓开发的IDE,自从android Studio 1.0正式版发布以后google已经正式使用android Studio了,目前版本是 1.3.2 正式版。