-----------------------------------2018.6.1更新---------------------------------------
附上github地址: https://github.com/Liiking/QRScanDemo
-----------------------------------以下为原文内容---------------------------------------
在集成zxing二维码时经常会遇到各种问题,比较常见的有下面两个。
1.预览拉伸的问题
原因:预览尺寸和surface view不一致。
解决方式:
针对于扫描时,二维码拉伸变形的问题,是因为zxing默认是针对横屏扫描的,所以,我们只需要改变x,y的计算,即横纵轴即可。此时,我们需要找到CameraConfigurationManager类:
找到findBestPreviewSizeValue方法:
将newDiff的变量计算代码改成如下:
int newDiff=Math.abs(newY - screenResolution.x) + Math.abs(newX - screenResolution.y);
2.近距离扫描二维码扫描不出
解决方式:
找到CameraConfigurationManager类的setDesiredCameraParameters(Camera camera)方法,将其中的代码注释,然后添加如下代码:
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();
int position = 0;
if(supportedPreviewSizes.size() > 2){
position = supportedPreviewSizes.size() / 2 + 1;// supportedPreviewSizes.get();
}else {
position = supportedPreviewSizes.size() / 2;
}
int width = supportedPreviewSizes.get(position).width;
int height = supportedPreviewSizes.get(position).height;
camera.setDisplayOrientation(90);
cameraResolution.x = width;
cameraResolution.y = height;
parameters.setPreviewSize(width, height);
setFlash(parameters);
setZoom(parameters);
camera.setParameters(parameters);
参考博文:
http://blog.youkuaiyun.com/xiaanming/article/details/10163203
http://m.blog.youkuaiyun.com/article/details?id=51683125
感谢作者,完美解决了问题。
为方便以后使用,整理出来一个demo,欢迎大家指正。
demo地址:
http://download.youkuaiyun.com/download/qq_1991/9709334
demo运行效果: