本模块采用双核心(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(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