二维码扫莫默认的确实需要优化:
Zxing优化
这是Google的二维码库,我们一般直接引用或者拿Libaray来修改UI,但是有一些优化策略你一定要知道,这就是为什么大厂的App扫描比你的快的原因,首先是瘦身,Zxing这个库比较大,你熟悉代码可以释放的删减,其次是性能上的优化:
1.在枚举类BarcodeFormat中定义了N多的类型,如果你只使用二维码,可以在启动的时候传递:
Intent intent = new Intent(getActivity(), CaptureActivity.class);
intent.setAction(Intents.Scan.ACTION);
intent.putExtra(Intents.Scan.FORMATS, "QR_CODE");
startActivityForResult(intent, REQUEST_CODE);
2.缩短自动聚焦的时间
在AutoFocusManager 中,有一个变量,AUTO_FOCUS_INTERVAL_MS,在自动聚焦的时候会根据该变量设定的时间来睡眠,所以如果有需要可以修改
3.扫描精度
库中有一个PlanarYUVLuminanceSource用来封装扫描的精度,原因是因为官方为了性能,将扫描成像进行了无用的删减,我们可以在CameraManger中有一个buildLuminanceSource这个方法中修改返回的对象,全部改成width,height,这样不用对准中心即可:return new PlanarYUVLuminanceSource(data, width, height, 0, 0,
width,height, false);
4.优化Demo
在扫描Activity中,我们扫描出结果后会去绘制一个Bitmap显示,其实我们并不需要这个位图,所以可以删除,可以搜索 drawResultBitmap
5.结果传递
当我们扫描到结果的时候你会发现有一些延迟,其实这是因为官方做了延迟,也就是DEFAULT_INTENT_RESULT_DURATION_MS,想要快速扫描,则把它设置为0
还有比如什么图片拉伸,扫描UI之类的优化自行寻找一下