几行代码即可快速集成二维码扫描功能
更新日志
compile 1.3 2016/08/02 优化扫描API
compile 1.4 2016/08/03 修复扫描时二维码拉伸问题
compile 1.5 2016/08/05 更新控制闪光灯API
compile 1.6 2016/08/08 更新生成带logo二维码时logo不带边距可能存在的问题
compile 1.7 2016/08/09 修改默认扫描框的大小,适配不同分辨率手机,修改自定义扫描框属性类型
compile 1.8 2016/08/10 修复解析二维码图片时可能存在的OOM问题
compile 1.9 2016/09/07 Library库中删除Application,在demo库中的Application执行初始化操作
compile 2.0 2016/10/12 测试Demo中添加Android M权限处理,代码库添加自定义属性支持小圆点是否展示
compile 2.1 2016/11/22 修复扫描中的一些bug
compile 2.2 2017/07/04 更新zxing包,修复一些已知的bug
使用说明
可打开默认二维码扫描页面
支持对图片Bitmap的扫描功能
支持对UI的定制化操作
支持对条形码的扫描功能
支持生成二维码操作
支持控制闪光灯开关
使用方式:
在具体介绍该扫描库之前我们先看一下其具体的使用方式,看看是不是几行代码就可以集成二维码扫描的功能。
compile 'cn.yipianfengye.android:zxing-library:2.2'
@Override
public void onCreate() {
super.onCreate();
ZXingLibrary.initDisplayOpinion(this);
}
/**
* 打开默认二维码扫描界面
*/
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
这里的REQUEST_CODE是我们定义的int型常量。
…
怎么样是不是很简单?下面我们可以来看一下具体的执行效果:
执行效果:
%2015.33.08.gif)
但是这样的话是不是太简单了,如果我想选择图片解析呢?别急,对二维码图片的解析也是支持的
集成对二维码图片的解析功能
调用系统API打开图库
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_IMAGE);
…
执行效果
有了默认的二维码扫描界面,也有了对二维码图片的解析,可能有的同学会说如果我想定制化显示UI怎么办呢?没关系也支持滴。
由于我们的扫描组件是通过Fragment实现的,所以能够很轻松的实现扫描UI的定制化。
…
启动id为fl_my_container的FrameLayout就是我们需要替换的扫描组件,也就是说我们会将我们定义的扫描Fragment替换到id为fl_my_container的FrameLayout的位置。而上面的button是我们添加的一个额外的控件,在这里你可以添加任意的控件,各种UI效果等。具体可以看下面在Activity的初始化过程。
…
其中analyzeCallback是我们定义的扫描回调函数,其具体的定义:
…
仔细看的话,你会发现我们调用了CondeUtils.setFragmentArgs方法,该方法主要用于修改扫描界面扫描框与透明框相对位置的,与若不调用的话,其会显示默认的组件效果,而如果调用该方法的话,可以修改扫描框与透明框的相对位置等UI效果,我们可以看一下my_camera布局文件的实现。
…
上面我们自定义的扫描控件的布局文件,下面我们看一下默认的扫描控件的布局文件:
…
可以发现其主要的区别就是在自定义的扫描控件中多了几个自定义的扫描框属性:
<declare-styleable name="innerrect">
<attr name="inner_width" format="dimension"/>
<attr name="inner_height" format="dimension"/>
<attr name="inner_margintop" format="dimension" />
<attr name="inner_corner_color" format="color" />
<attr name="inner_corner_length" format="dimension" />
<attr name="inner_corner_width" format="dimension" />
<attr name="inner_scan_bitmap" format="reference" />
<attr name="inner_scan_speed" format="integer" />
<attr name="inner_scan_iscircle" format="boolean" />
</declare-styleable>
通过以上几个属性我们就可以定制化的显示我们的扫描UI了,比如定制化微信扫描UI:
执行效果
%2015.33.08.gif)
当然了如果以上的以上,你还是对定制化UI方面不太满意,可以直接下载我的项目,然后引入lib-zxing module作为你的module,直接修改其代码。
生成二维码图片
生成带Logo的二维码图片:
…
…
.gif)
/**
* 打开闪光灯
*/
CodeUtils.isLightEnable(true);
/**
* 关闭闪光灯
*/
CodeUtils.isLightEnable(false);
也可以参考我的博客:几行代码快速集成二维码扫描库
暂无开放 Issues,或尚未同步最近议题。