zxing私人定制之一 初试扫码

Posted dsliang12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zxing私人定制之一 初试扫码相关的知识,希望对你有一定的参考价值。

转载请标明出处:
http://blog.csdn.net/zq2114522/article/details/51485680
本文出自:【梁大盛的博客】

zxing私人定制之一 初试扫码

引:第一次接触二维码,当然二维码原理懂得不多!那又何妨?有强大的zxing!
zxing代码真的写的很不错!支持各种平台,代码架构清晰…大神之作!

结构目录介绍

zxing项目:https://github.com/zxing/zxing/tree/master
在写此文章的时候android app版本已经去到4.7.6了

当然第一时间把整项目下载回来.很大!整个项目几乎100+M.但是对于我们来说,用到的就几M的东西.关注三个文件夹!

看到目录的结构基本都知道是使用eclipse创建的项目,毕竟现在已经是Android Studio的天下了.我们不可能还挂倒档倒车吧?
接下来就是新建Android Studio项目!

新建Android Studio工程

目前采用是一边导入项目一边截图的方式,这种方式是否没效率?

Android Studio 版本:2.0Beta5
Jdk 版本: 1.8

项目名称:zxing

默认MinmumSdk:10

默认Empty Activity

默认开发环境帮我们自动创建MainActivity,activity_main布局文件.

Android Studio 2.0新建项目默认是采用gradle-2.0.x 构建项目,可以看到使用gradle-2.0.x导致项目出错.最简单的办法就是将版本改成1.5.0.当然我也是这样干的.修改完同步一次错误消除.

把zxing项目zxing-master\\android\\src\\com\\google\\zxing\\client\\android目录下存放的是和Android相关的代码.拷贝到我们的项目里面.

删除MainActivity.java,Android 帮我们创建的资源文件(因为我们无需使用开发环境为我们创建的资源).

把zxing项目zxing-master\\android\\res目录下所有文件拷到我们项目的res目录下

新建core模块,里面放置和android平台无关的代码.zxing的核心解码代码.

(zxing项目,core模块主要负责二维码的解码工作.全部使用java语言编写,于平台无关.作为一个模块引入.app模块就是纯粹的android代码了.分别一个是通用代码一个是android,很清晰的代码结构.所以zxing移植到各种平台也不是一件难事!)

删除开发工具为自动创建的代码
把zxing项目zxing-master\\core\\src\\main\\java目录下的代码拷到我们项目core模块的相应目录下.

app模块依赖core模块.给app添加模块依赖.

AndroidManifest.xml文件安装zxing照搬即可,但是要注意package属性不要弄错.

到这里尝试编译,发现还漏了一个类(CameraConfigurationUtils.java).然后发现报错了.
zxing项目把CameraConfigurationUtils.java安置在android-core目录下.因为都是和android相关的,把CameraConfigurationUtils.java拷到zxing.camera包下.

再编译,发现很多import都是无效的.因为代码都是在zxing项目拷贝过来,很多import引用的包名来到我们的项目就不对了.使用把包名替换一下即可.

zxing项目中原包名:com.google.zxing.client.android
现项目包名:com.dsliang.zxing

引来新的问题,因为我Jdk是1.8.但是发现使用Jdk 1.8编译会报错,尝试换成Jdk 1.7通过编译.
但是在在代码中一下子找不到那里的问题.这下子终于正确无误的编译过了!

那就尝试真机运行看看效果吧!不知道你激动了没,反正我现在很激动!
事实上是,闪退了!闪退!闪退!
还好只有布局文件有些许问题.出现类无法找到.修改类名即可(因包名没改过来).
我保证在我电脑这是最后一个错!哈哈,如无意外,人品好的话应该可看到想看的结果!

附上:
编译工具版本

尝试扫一扫

zxing项目运行起来应该是这样子的.

或者是这样的(扫描产品条形码)

zxing很强大,支持很多种个格式的二维码.

当然更多的细节只有在代码里面才知道…有兴趣的同学请去看源码把!

总结

第一篇没写什么有价值的东西,只是简单的把代码跑一次.剔除掉一些没相关的代码,但是有个一问题!
发现zxing代码默认是横屏模式么?(风景模式)横屏模式!市面上没多少二维码扫描工具是横屏模式的吧?
微信就是最典型的,单单从使用角度上竖屏才是实用性最强的吧?
那么对于我来说,接下来的第二篇关于zxing的文件就是实现竖屏了!因为竖屏牵涉到camera稍稍会复杂,并且会穿插zxing扫描的原理和整体运作流程,扫描结果处理,camera预览/相片分辨率等诸多问题

因为网络问题一直没法上传到github,附上下载地址:
http://download.csdn.net/detail/zq2114522/9531339

github:
https://github.com/dsliang/simple-zxing

以上是关于zxing私人定制之一 初试扫码的主要内容,如果未能解决你的问题,请参考以下文章

Zxing无法扫码128

zxingobjc 怎么关闭扫码成功后的声音

android zxing扫码 扫描二维码有对焦的黄点怎么去除

安卓调用zxing扫码之后返回结果为空

微信H5游戏开发私人定制

Android:实际运用Zxing集成二维码扫描 及 自定义扫码界面(demo源码)