Scanner
Introduction: 【发布】Android 二维码扫码模块,双核心(zxing,zbar)解码,带界面,有 C 代码,编译需要安装 NDK 哦
Tags:
本模块采用双核心(zxing,zbar)进行解码,同时 zxing 在二值化算法上也采用双算法
可以直接下载 apk 测试:https://github.com/phynos/Scanner/releases
优点
- zbar 弥补了 zxing 识别慢,倾斜角度的问题
- zxing 解码增加了直方图二值化算法,有助于识别高对比度的二维码(特别是一些单色 LCD 屏幕,比如一些嵌入式设备屏幕)
- zxing 在识别一些曝光不一致导致有渐变色的二维码上优势
缺点
- 由于采用双核心 3 次解码,效率上会有影响
- 对比支付宝、微信,无法处理一些背景颜色和二维码颜色形同的情形
- 不支持微信的自动缩放功能
调用方法
调用扫码界面
Intent intent = new Intent(getActivity(), CaptureActivity.class);
intent.putExtra(CaptureActivity.KEY_INPUT_MODE, CaptureActivity.INPUT_MODE_QR);
startActivityForResult(intent, 9527);
获取扫码结果(在 onActivityResult 中回调)
onActivityResult(int requestCode, int resultCode, Intent data)
String sn = data.getStringExtra("sn");
其他说明
- zxing 核心部分是由官网代码自己编译
- android 摄像头部分的代码由 zxing 代码和开源中国的代码合并合成
- zbar 代码来自网络,so 库是直接在工程中编译的
注意事项
- 如果有代码混淆,请在 app 模块里面添加以下 -keep class net.sourceforge.zbar.* { ; }
- 关于 NDK17 版本之后 ndk 的问题,参考: https://www.jianshu.com/p/ed9c3fea3584
