**转载【http://blog.csdn.net/qq_1991/article/details/53586408】**
在集成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.csdn.net/xiaanming/article/details/10163203
http://m.blog.csdn.net/article/details?id=51683125
感谢作者,完美解决了问题。
为方便以后使用,整理出来一个demo,欢迎大家指正。
demo地址:
http://download.csdn.net/detail/qq_1991/9709334
demo运行效果: