快速布局二维码
快速布局条形码
主要使用基于封装之后的 ZXing Android Embedded 库,原型是 Google 做的一个开源项目,叫做 ZXing(zebra crossing)
常规使用方法 看github介绍 项目地址
自由定制方法 :
配置文件
compile 'com.journeyapps:zxing-android-embedded:3.5.0'
具体看项目最新版
具体代码修改
- 利用 DecoratedBarcodeView 显示扫描窗口
DecoratedBarcodeView是条形码扫描界面的布局 可定制自己的布局样式
- 重写 CaptureManager
CaptureManager是扫描窗口 以及扫描后数据传输 以及动作 都可以在这个类里修改成自己想要的动作 比如加个自己的回调 比如存入数据库 比如用广播发出去
本次使用
本次使用主要是修改CaptureManager类 达到扫描后不结束当前Activity 数据显示在当前界面 继续扫描
本次修改
修改returnResult(BarcodeResult rawResult)方法 去掉finish()
新增自己的回调接口
/**
* 修改此方法达到 扫描后不结束当前Activity
* @param rawResult 新增的回调接口
*/
protected void returnResult(BarcodeResult rawResult) {
Intent intent = resultIntent(rawResult, getBarcodeImagePath(rawResult));
activity.setResult(Activity.RESULT_OK, intent);
if (barcodeView.getBarcodeView().isCameraClosed()) {
if (null != mResultCallBack) {
mResultCallBack.callBack(IntentIntegrator.REQUEST_CODE, Activity.RESULT_OK, intent);
}
} else {
finishWhenClosed = true;
}
barcodeView.pause();
inactivityTimer.cancel();
barcodeView.resume();
}
回调接口
/**
* 新增回调
*/
public interface ResultCallBack {
void callBack(int requestCode, int resultCode, Intent intent);
}
private ResultCallBack mResultCallBack;
public void setResultCallBack(ResultCallBack resultCallBack) {
this.mResultCallBack = resultCallBack;
}
新增调用decode() 达到扫描后继续扫描
private BarcodeCallback callback = new BarcodeCallback() {
@Override
public void barcodeResult(final BarcodeResult result) {
barcodeView.pause();
beepManager.playBeepSoundAndVibrate();
handler.post(new Runnable() {
@Override
public void run() {
returnResult(result);
//扫描后持续扫描
decode();
}
});
}
@Override
public void possibleResultPoints(List<ResultPoint> resultPoints) {
}
};
至此, 条形码定制就完成咯