ZXing库二维码扫描修改

本文介绍如何优化二维码扫描应用,包括设置生成二维码的容错率、调整扫描框样式及大小、聚焦时间和距离等,并解决了切换至竖屏时图像拉伸的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,设置生成二维码的容错率

原来二维码在生成时并没有设置容错率,事实上我们可以简单的设置一下容错率,只需要在EncodingHandler类中hints.put(EncodeHintType.CHARACTER_SET, "utf-8");代码后 添加一行

hints.put(EncodeHintType.ERROR_CORRECTION, String.valueOf(ErrorCorrectionLevel.H));即可。

2,调整扫描框样式

扫描框的重绘方法在ViewfinderView类中的onDraw()方法中,可以在该方法中修改扫描框的显示形式。

3,调整扫描区域大小

扫描框大小由扫描区域大小限制,getFramingRect()用来获取扫描框的大小,getFramingRectInPreview()用来调整扫描区域的大小,两个方法均在CameraManager类中,getFramingRectInPreview()方法通过调用getFramingRect()来确定扫描区域的大小。

4,聚焦时间

该开源库设置了自动对焦,对焦时长默认1500毫秒,可以在AutoFocusCallback类中修改AUTOFOCUS_INTERVAL_MS参数。

5,聚焦距离

聚焦距离参数可在CameraConfigurationManager类中修改TEN_DESIRED_ZOOM参数。

6,修改切换成竖屏后图像拉伸的问题

在CameraConfigurationManager类中找到initFromCameraParameters()方法,并将一下代码重写

Camera.Parameters parameters = camera.getParameters();

previewFormat = parameters.getPreviewFormat();

previewFormatString = parameters.get("preview-format");

Log.d(TAG, "Default preview format: " + previewFormat + '/' + previewFormatString);

WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

Display display = manager.getDefaultDisplay();

screenResolution = new Point(display.getWidth(), display.getHeight());

Log.d(TAG, "Screen resolution: " + screenResolution);

//---修改

Point screenResolutionForCamera = new Point();

screenResolutionForCamera.x = screenResolution.x;

screenResolutionForCamera.y = screenResolution.y;

// preview size is always something like 480320, other 320480

if (screenResolution.x < screenResolution.y) {

screenResolutionForCamera.x = screenResolution.y;

screenResolutionForCamera.y = screenResolution.x;

}

cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);

// cameraResolution = getCameraResolution(parameters, screenResolution);

Log.d(TAG, "Camera resolution: " + screenResolution);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值