Android Zxing扫描仪在纵向模式下无法扫描条形码

时间:2013-07-11 05:17:07

标签: android camera android-camera barcode zxing

我试图让Zxing以纵向模式扫描条形码。以下是我发现的,它在扫描QRcode时起作用。但是,它不扫描1D类型代码(例如条形码)。在代码中,我认为图像已经转换了90度。

但是,当我扫描条形码时(如http://en.wikipedia.org/wiki/File:UPC-A-036000291452.png),设备必须转为横向模式,而不是纵向模式。或扫描仪永远不会找到任何东西......

我是否有遗漏的东西,或者我需要做一些额外的努力才能将凸轮转换到其他地方?

(来自https://code.google.com/p/zxing/issues/detail?id=178

1,manifest.xml,你需要制作CaptureActivity肖像。

2,DecodeHandler.java,在buildLuminanceSource之前旋转数据,它起作用,因为在YCbCr_420_SP和YCbCr_422_SP中,Y通道是平面的并且首先出现


byte[] rotatedData = new byte[data.length];
for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++)
        rotatedData[x * height + height - y - 1] = data[x + y * width];

3,需要修改CameraManager.java,getFramingRectInPreview()。


rect.left = rect.left * cameraResolution.y / screenResolution.x;
rect.right = rect.right * cameraResolution.y / screenResolution.x;
rect.top = rect.top * cameraResolution.x / screenResolution.y;
rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;

4,CameraConfigurationManager.java,在setDesiredCameraParameters()中将相机方向设置为肖像


parameters.set("orientation", "portrait");

并且在getCameraResolution()中,您需要交换x和y,因为相机预览大小类似于480 * 320,而不是320 * 480。


int tmp = cameraResolution.x;
cameraResolution.x = cameraResolution.y;
cameraResolution.y = tmp;
return cameraResolution;

0 个答案:

没有答案