zxing是一个谷歌开源库,可以用来进行二维码扫描及二维码的合成。但是很多地方都没有详细介绍如何将zxing集成到自己的项目中去。最近正好用了一下这个库,下面就详细的分享一下导入的过程。
1,先去github上去下载zxing。下载地址:https://github.com/zxing/zxing,下载之后解压如下图:

2.在自己的android项目中,导入module,即导入上图中红色框框的部分;等待带入完成。为了辨识这部分功能 命名为zxing(当然可以随便起名字)


3.在上导入module之后,需要更改一些配置,导入的module是作为一个库而不是一个独立的项目,所以在zxing的build.gradle中将apply plugin: 'com.android.application'改为apply plugin: 'com.android.library',如下图:

其次还要要导入依赖,这里依赖的zxing库,同样还是再zxing的build.gradle中添加如下图所需依赖:

添加完依赖,sync now一下,会有如下报错

这个时候不要担心 ,根据提示去修改一下即可,第一个错误是提示作为库,不能有applicationid,去zxing的gradle文件中删掉即可,如下图所示

第二个错误,去zxing的Manifest文件中删掉设置的minsdk,如下图:

4.上述操作完成之后,要在项目中引入,右击项目==> Open Module Settings


选择zxing,点击ok,如下图:

5.到这里导入工作已大部分完成,但是项目中还缺少CameraConfigurationUtils这个文件,这个文件就在下载zxing中的android-core文件夹下,对,一直点进去,就能找到这个文件,然后复制到你的项目下面(zxing文件夹下),如下图:

6. 这个时候你就可以运行一下项目了,不好,还是报错,报错如下图:

这些错误还都是乱码提示,不要慌张,根据提示点击进去你会发现所有报错的地方都有一个共同点,那就是都用了switch语句,然后你要做的就是将所有的switch语句换成if语句就可以,这是因为
对比普通工程和Library工程的R文件发现,Library工程的R文件常量缺少final。
由于Library工程的可以包含资源文件,编译会生成R文件,多个Library中可能出现id冲突的问题。为了解决这个问题谷歌将Library工程R文件才从静态常量变为非常量。
然而switch语句的case中 必须是常量,而此时的R.id.xxx为非常量,所以报错了。
改完所有的switch语句之后,运行还是会发现一个错误,如下图:

这个不用担心非常好改,将ArrayList中的类型补全就好了。如下图:

至此zxing就导入到你的项目中去了,在自己的应用中启动CaptureActivity就可以进行扫描了。
》》》》》补充一下,当项目运行起来去调用CaptureActivity进行扫描的到时候,可能会遇到2个问题:第一个会提示“很遗憾,相机发生了问题,需要重启相机”,出现这个问题的原因是在android6.0之后除了要在Manifest文件中声明相机权限还需要在代码中动态去申请相机权限的,所以补充一下代码就好了,如下图:

还有第二个小问题,扫描界面默认是横屏的,如果想改成竖屏,就在Manifest文件中将CaptureActivity的设置改成竖屏,见下图:

网友评论