Android开发之——扫描工具Zxing
前言
二维码可以集成文本、网址、名片、文件、图片、音视频、微信、小程序等众多的功能,极大的方便了信息的传输与推广。在Android中使用Zxing二维码工具,zxing项目是谷歌推出的用来识别多种格式条形码的开源项目,本文将介绍Zxing项目、如何运行官方、自定义功能等。
Zxing介绍
官方下载地址
Github下载地址:https://github.com/zxing/zxing
项目介绍
目录结构
- Android:可运行的Android客户端
- core:核心图像解码库和测试代码
- android-core:与android相关的代码及其他Android应用程序
- javase:JavaSE的客户端代码
本文主要使用Android 客户端及依赖文件core和android-core
运行Zxing
将项目下载到本地后,解压
解压后,看到项目为Eclipse项目结构(目前大多数使用Android Studio开发),本文以Intellij和Eclipse为例进行讲解
将项目导入到Intellij
File->New->Project from Existing Source
定位到项目所在路径,并确定
配置项目
添加一个Android项目,并保存
待项目引入环境配置后,运行
将项目导入到Eclipse
将zxing中的Android导入到Eclipses中
下载android-core和core jar包
如果不适用android-core libary和 core library ,可以从maven官网下载jar包适用,本文采用这种方式
项目路径下新建libs,并将上述jar包导入
运行项目
项目分析
核心代码分析
CaptureActivity
ZXing暴露的调用Activity。在handleDecode方法中对扫码成功后的动作作处理。
ViewfinderView
ZXing扫码窗口的绘制,原始的ZXing使用这种方式去绘制,在上面提供的开源库中,作者将扫描框的绘制直接抽取到了XML文件中,这样修改起来更加方便了。
CameraConfigurationManager
修改横竖屏、处理变形效果的核心类。
在public void setDesiredCameraParameters(Camera camera, boolean safeMode)方法中(读取配置设置相机的对焦模式、闪光灯模式等等),可以将扫描改为竖屏
DecodeHandler
Xing解码的核心类
CaptureActivityHandler
当DecodeHandler.decode完成解码后,系统会向CaptureActivityHandler发消息。如果编码成功则调用CaptureActivity.handleDecode方法对扫描到的结果进行分类处理。
代码改造
Github上Zxing三方库比较多,如果有适合自己的项目可以不用改造,拿来用就是了,但是如果不适用,就要自己动手改造了, 当然Zxing官方也在一直升级,我们可以使用官方提供的实例改造,也可以在第三方库的基础上改造。
常用第三方库
android-zxingLibrary
几行代码快速集成二维码扫描功能,目前start比较高的,功能也比较完善
- 支持对图片Bitmap的扫描功能
- 支持对UI的定制化操作
- 支持对条形码的扫描功能
- 支持生成二维码操作
- 支持控制闪光灯开关