【QrCode】Zxing竖屏,并解决变形问题

Step 1: Add following lines to rotate data before buildLuminanceSource(..) in decode(byte[] data, int width, int height)

DecodeHandler.java:

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];}int tmp = width;width = height;height = tmp;PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height);

Step 2: Modify getFramingRectInPreview().

CameraManager.java

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;

Step 3: Disable the check for Landscape Mode in initFromCameraParameters(…)

CameraConfigurationManager.java

Camera.Parameters parameters = camera.getParameters();WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE);Display display = manager.getDefaultDisplay();int width = display.getWidth();int height = display.getHeight();if (width < height) {int temp = width;width = height;height = temp;}screenResolution = new Point(height, width);cameraResolution = findBestPreviewSizeValue(parameters, new Point(width, height));

Step 4: Add following line to rotate camera insetDesiredCameraParameters(…)

CameraConfigurationManager.java

camera.setDisplayOrientation(90);

Step 5: Do not forget to set orientation of activity to portrait. I.e: manifest

,君子无故,玉不去身。

【QrCode】Zxing竖屏,并解决变形问题

相关文章:

你感兴趣的文章:

标签云: