zxing集成很多关于扫描的功能,如果只需要实现简单扫描功能,可以使用他人改过的zxing库,比如https://github.com/yipianfengye/android-zxingLibrary简单快速的实现扫描以及界面定制,美中不足的是扫描框必须给定尺寸(dp)。
仅仅实现扫描功能参考上面的网址即可,要实现连续扫描的话需要更改zxing库内capturefragement的handleDecode函数。所以不能直接在build.gradle中添加依赖。而是需要先将上面网址中的lib-zxing复制下来放到自己项目的app同级文件夹下。
实现连续扫描请先参考上面的网址实现基本的扫描功能。
将依赖库放到自己项目中后分别更改setting.gradle以及build.gradle(app)文件。
首先在setting.gradle中添加’:lib-zxing’告诉app有新的项目加进来了然后在build.gradle dependencies{}中添加 implementation project(’:lib-zxing’)将刚加进来的项目作为依赖。
现在已经将刚导入的lib-zxing作为项目依赖,可以正常使用扫描功能了。实现连续扫描需要 在captureFragment新建restartCcaream函数。
//重新开始扫描
private void restartCarema() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (handler != null) {
handler.restartPreviewAndDecode();
}
}
},1000);
}
然后在同文件handleDecode函数调用。
public void handleDecode(Result result, Bitmap barcode) {
inactivityTimer.onActivity();
playBeepSoundAndVibrate();
if (result == null || TextUtils.isEmpty(result.getText())) {
if (analyzeCallback != null) {
analyzeCallback.onAnalyzeFailed();
if (handler != null) {
restartCarema();
}
}
} else {
if (analyzeCallback != null) {
analyzeCallback.onAnalyzeSuccess(barcode, result.getText());
if (handler != null) {
restartCarema();
}
}
}
}
到此便实现了连续扫描并且可以在restartCarema()中设置扫描间隔时间,现在为1000毫秒。