二维码一般在项目都会用到,今天分享下我开发二维码的一些心得。
zxing介绍
github地址:https://github.com/zxing/zxing
代码很多,官方演示的例子在文件android,一个较为完整的app,导入Android studio,发现少了CameraConfigurationUtils,这个类在文件android-core下。官方效果图:
但是实际开发只需要扫码和生成二维码两个功能就夠了,因此我做了抽离删减,最终我的效果图:
zxing使用
添加依赖
|
|
扫描二维码
|
|
回调:
生成二维码
|
|
识别二维码
|
|
|
|
由于时间仓促,抽离的代码可能或多或少有些问题,细节待优化。
另外,ViewfinderView自定义属性参考了http://my.oschina.net/smuswc/blog/609413?fromerr=RgSd7WKf
官方zxing例子学习
如果代码涉及core-3.2.1,就不在研究,有兴趣可自行深入去学习。
扫描二维码
代码调用顺序CaptureActivity —–> CaptureActivityHandler —–> CameraManager —–> PreviewCallback —–> DecodeHandler —–> CaptureActivityHandler —–> CaptureActivity。下面一一分析。
CaptureActivity
CaptureActivity入口类,主要做了Camera,Beep,AmbientLight等初始化。CaptureActivityHandler初始化是在initCamera方法里:
CaptureActivityHandler
CaptureActivityHandler构造方法做了DecodeThread初始化,DecodeThread run方法做了DecodeHandler初始化,然后Camera开始扫码工作。
CameraManager
|
|
PreviewCallback
|
|
DecodeHandler
扫码结果,反馈给CaptureActivityHandler
CaptureActivityHandler
扫码结果,再反馈给CaptureActivity,这样就走完了扫码过程。
生成二维码
只需要以下核心代码:
源码
官方的例子和我自己的抽离出的代码都上传github了,地址:https://github.com/WuXiaolong/zxingSample