我的应用程序使用ZXing扫描二维码,除非手机离二维码很远,否则无法读取二维码(见图片,6-7英寸远,仍然无法读取)。代码在framingRect中居中,但相机似乎只从顶部的两个定位方块中拾取结果点。我已经通过我在这里找到的一些代码增加了边框矩形的大小,这确实产生了更好的结果。
代码:(替换zxing.camera.cameramanager.Java中的getFramingRect )
public Rect getFramingRect() {
if (framingRect == null) {
if (camera == null) {
return null;
}
Point screenResolution = configManager.getScreenResolution();
int width = screenResolution.x * 3 / 4;
int height = screenResolution.y * 3 / 4;
Log.v("Framing rect is : ", "width is "+width+" and height is "+height);
int leftOffset = (screenResolution.x - width) / 2;
int topOffset = (screenResolution.y - height) / 2;
framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);
Log.d(TAG, "Calculated framing rect: " + framingRect);
}
return framingRect;
}出于我无法理解的原因,有了这个新的更大的框架矩形,代码可以在适合矩形宽度的情况下立即读取,而以前的代码必须占据矩形中心的一小块区域(见图)。
我的问题是:如何在不增加矩形大小的情况下,在框架矩形的范围内进行代码扫描?为什么会发生这种情况?

发布于 2015-07-18 23:38:30
将宽度和高度增加到4/4 (只需将它们保留为屏幕分辨率),然后更改边框矩形视觉表示,使其看起来就像扫描仪只在其中一样。为我的应用程序工作。
https://stackoverflow.com/questions/31422583
复制相似问题