在我们是Zxing框架进行二维码扫描的时候,会发现,现在手机随着分辨率的增加,那个扫描框会越来越小解决办法:
1:找到CameraManager类,最上面四行参数就是设置宽高的,
private static final int MIN_FRAME_WIDTH = (int) DensityUtils.dp2px(MyApplication.getInstance(),180);
private static final int MIN_FRAME_HEIGHT = (int) DensityUtils.dp2px(MyApplication.getInstance(),180);
private static final int MAX_FRAME_WIDTH = (int) DensityUtils.dp2px(MyApplication.getInstance(),240);
private static final int MAX_FRAME_HEIGHT = (int) DensityUtils.dp2px(MyApplication.getInstance(),240);
第二个问题:每次扫描后图片都会压缩下
解决方法:在Zxing包下的camera包下找到CameraConfigurationManager.java类,修改:
搜索initFromCameraParameters 这个方法,在该方法下找到 Log.d(TAG, "Screen resolution: " + screenResolution); 这句话,在这句话下面添加这些代码:
Point screenResolutionForCamera = new Point();
screenResolutionForCamera.x = screenResolution.x;
screenResolutionForCamera.y = screenResolution.y;
if (screenResolution.x < screenResolution.y) {
screenResolutionForCamera.x = screenResolution.y;
screenResolutionForCamera.y = screenResolution.x;
}
然后下面有一行这样的代码:
- cameraResolution = getCameraResolution(parameters, screenResolution);
中的screenResolution改为 screenResolutionForCamera
第三个问题:调整扫描区域 优化取图速度
Zxing 是google提供的二维码扫描工程
Demo本身默认的扫图区域最大只有 360*480 需要拉开很远的距离才能将整个二维码扫描到
因此需要我们自己调整取图大小
在CameraManager.java这个类中进行调整
默认的大小是 以下这4个参数
参数实际在 getFramingRect() 方法中起作用
以下是原本Demo中提供的
我将代码改成了
当然...取图改的这么大 会多占一点内存....相应的扫描的时候快得多