先罗列优化点:
1.优化扫描精度 (增加解析成功率)
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
2.生成图片(用于被解析)时不剪切图片(增加二维码图片的完整性)
优化前:new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top, rect.width(), rect.height());
优化后:new PlanarYUVLuminanceSource(data, width, height,0,0,width, height);
3.舍去第一帧数据(一般第一帧都是无效,解析无效文件也要耗费1秒左右时间)
在decode(byte[] data, int width, int height) 方法中直接发送 R.id.decode_failed数据
***4.比较重要的 选择合适缩放比例
处理时我是选择了支持的最大缩放比例(同时控制好扫描框大小)
int maxZoom = parameters.getMaxZoom();
*****5.最重要的 选择合适的分辨率进行处理
处理时我是选择了480*320
对于第1点优化方式:
MultiFormatReader multiFormatReader = new MultiFormatReader();
multiFormatReader.setHints(hints);
hints是一个集合
hints = new Hashtable<DecodeHintType, Object>(3);
hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
下面这些是二维码扫描的解析格式,可以根据需要选择也可以全加入,对扫描影响不大