Fix r1221 logic

git-svn-id: https://zxing.googlecode.com/svn/trunk@1222 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2010-02-27 08:47:32 +00:00
parent 75d623726f
commit 97098a22be

View file

@ -50,9 +50,6 @@ final class CameraManager {
private static final int MAX_FRAME_WIDTH = 480; private static final int MAX_FRAME_WIDTH = 480;
private static final int MAX_FRAME_HEIGHT = 360; 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 final Pattern COMMA_PATTERN = Pattern.compile(",");
private static CameraManager cameraManager; private static CameraManager cameraManager;
@ -355,37 +352,37 @@ final class CameraManager {
private Point getCameraResolution(Camera.Parameters parameters) { 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; Point cameraResolution = null;
if (previewSizeValueString != null) {
Log.v(TAG, "preview-size parameter: " + previewSizeValueString);
cameraResolution = findBestPreviewSizeValue(previewSizeValueString);
}
if (cameraResolution == null) {
Camera.Size cameraPreviewSize = parameters.getPreviewSize(); Camera.Size cameraPreviewSize = parameters.getPreviewSize();
if (cameraPreviewSize != null) { if (cameraPreviewSize != null) {
Log.v(TAG, "Default preview size: " + cameraPreviewSize.width + ", " + cameraPreviewSize.height); Log.v(TAG, "Default preview size: " + cameraPreviewSize.width + ", " + cameraPreviewSize.height);
cameraResolution = new Point(cameraPreviewSize.width, cameraPreviewSize.height); cameraResolution = new Point(cameraPreviewSize.width, cameraPreviewSize.height);
} }
if (cameraResolution == null) {
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) { 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. // Ensure that the camera resolution is a multiple of 8, as the screen may not be.
cameraResolution.x = (cameraResolution.x >> 3) << 3; cameraResolution = new Point(
cameraResolution.y = (cameraResolution.y >> 3) << 3; (screenResolution.x >> 3) << 3,
(screenResolution.y >> 3) << 3);
}
return cameraResolution; return cameraResolution;
} }
private static Point findBestPreviewSizeValue(String previewSizeValueString) { private static Point findBestPreviewSizeValue(String previewSizeValueString, Point screenResolution) {
int bestX = 0; int bestX = 0;
int bestY = 0; int bestY = 0;
int diff = Integer.MAX_VALUE; int diff = Integer.MAX_VALUE;
@ -408,7 +405,7 @@ final class CameraManager {
continue; 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) { if (newDiff == 0) {
bestX = newX; bestX = newX;
bestY = newY; bestY = newY;