From 97098a22be1f0ea85a30fae388c41e7a842829f1 Mon Sep 17 00:00:00 2001 From: srowen Date: Sat, 27 Feb 2010 08:47:32 +0000 Subject: [PATCH] Fix r1221 logic git-svn-id: https://zxing.googlecode.com/svn/trunk@1222 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../zxing/client/android/CameraManager.java | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/android/src/com/google/zxing/client/android/CameraManager.java b/android/src/com/google/zxing/client/android/CameraManager.java index 2ec899240..72d81efee 100755 --- a/android/src/com/google/zxing/client/android/CameraManager.java +++ b/android/src/com/google/zxing/client/android/CameraManager.java @@ -50,9 +50,6 @@ final class CameraManager { private static final int MAX_FRAME_WIDTH = 480; private static final int MAX_FRAME_HEIGHT = 360; - private static final int TARGET_PREVIEW_WIDTH = 320; - private static final int TARGET_PREVIEW_HEIGHT = 240; - private static final Pattern COMMA_PATTERN = Pattern.compile(","); private static CameraManager cameraManager; @@ -355,37 +352,37 @@ final class CameraManager { private Point getCameraResolution(Camera.Parameters parameters) { - String previewSizeValueString = parameters.get("preview-size-values"); - // saw this on Xperia - if (previewSizeValueString == null) { - previewSizeValueString = parameters.get("preview-size-value"); - } Point cameraResolution = null; - if (previewSizeValueString != null) { - Log.v(TAG, "preview-size parameter: " + previewSizeValueString); - cameraResolution = findBestPreviewSizeValue(previewSizeValueString); + + Camera.Size cameraPreviewSize = parameters.getPreviewSize(); + if (cameraPreviewSize != null) { + Log.v(TAG, "Default preview size: " + cameraPreviewSize.width + ", " + cameraPreviewSize.height); + cameraResolution = new Point(cameraPreviewSize.width, cameraPreviewSize.height); } if (cameraResolution == null) { - Camera.Size cameraPreviewSize = parameters.getPreviewSize(); - if (cameraPreviewSize != null) { - Log.v(TAG, "Default preview size: " + cameraPreviewSize.width + ", " + cameraPreviewSize.height); - cameraResolution = new Point(cameraPreviewSize.width, cameraPreviewSize.height); + String previewSizeValueString = parameters.get("preview-size-values"); + // saw this on Xperia + if (previewSizeValueString == null) { + previewSizeValueString = parameters.get("preview-size-value"); + } + if (previewSizeValueString != null) { + Log.v(TAG, "preview-size parameter: " + previewSizeValueString); + cameraResolution = findBestPreviewSizeValue(previewSizeValueString, screenResolution); } } if (cameraResolution == null) { - cameraResolution = new Point(screenResolution.x, screenResolution.y); + // Ensure that the camera resolution is a multiple of 8, as the screen may not be. + cameraResolution = new Point( + (screenResolution.x >> 3) << 3, + (screenResolution.y >> 3) << 3); } - // Ensure that the camera resolution is a multiple of 8, as the screen may not be. - cameraResolution.x = (cameraResolution.x >> 3) << 3; - cameraResolution.y = (cameraResolution.y >> 3) << 3; - return cameraResolution; } - private static Point findBestPreviewSizeValue(String previewSizeValueString) { + private static Point findBestPreviewSizeValue(String previewSizeValueString, Point screenResolution) { int bestX = 0; int bestY = 0; int diff = Integer.MAX_VALUE; @@ -408,7 +405,7 @@ final class CameraManager { continue; } - int newDiff = Math.abs(newX - TARGET_PREVIEW_WIDTH) + Math.abs(newY - TARGET_PREVIEW_HEIGHT); + int newDiff = Math.abs(newX - screenResolution.x) + Math.abs(newY - screenResolution.y); if (newDiff == 0) { bestX = newX; bestY = newY;