mirror of
https://github.com/zxing/zxing.git
synced 2024-11-10 13:04:05 -08:00
Set zoom a bit more reliably and aggressively
git-svn-id: https://zxing.googlecode.com/svn/trunk@1245 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
6c0ef1a5be
commit
85a6da3052
|
@ -50,6 +50,9 @@ 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 TEN_DESIRED_ZOOM = 27;
|
||||||
|
private static final int DESIRED_SHARPNESS = 30;
|
||||||
|
|
||||||
private static final Pattern COMMA_PATTERN = Pattern.compile(",");
|
private static final Pattern COMMA_PATTERN = Pattern.compile(",");
|
||||||
|
|
||||||
private static CameraManager cameraManager;
|
private static CameraManager cameraManager;
|
||||||
|
@ -67,7 +70,7 @@ final class CameraManager {
|
||||||
private boolean previewing;
|
private boolean previewing;
|
||||||
private int previewFormat;
|
private int previewFormat;
|
||||||
private String previewFormatString;
|
private String previewFormatString;
|
||||||
private boolean useOneShotPreviewCallback;
|
private final boolean useOneShotPreviewCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Preview frames are delivered here, which we pass on to the registered handler. Make sure to
|
* Preview frames are delivered here, which we pass on to the registered handler. Make sure to
|
||||||
|
@ -327,18 +330,9 @@ final class CameraManager {
|
||||||
Log.v(TAG, "Setting preview size: " + cameraResolution.x + ", " + cameraResolution.y);
|
Log.v(TAG, "Setting preview size: " + cameraResolution.x + ", " + cameraResolution.y);
|
||||||
parameters.setPreviewSize(cameraResolution.x, cameraResolution.y);
|
parameters.setPreviewSize(cameraResolution.x, cameraResolution.y);
|
||||||
|
|
||||||
// FIXME: This is a hack to turn the flash off on the Samsung Galaxy.
|
setFlash(parameters);
|
||||||
parameters.set("flash-value", 2);
|
setZoom(parameters);
|
||||||
|
//setSharpness(parameters);
|
||||||
// This is the standard setting to turn the flash off that all devices should honor.
|
|
||||||
parameters.set("flash-mode", "off");
|
|
||||||
|
|
||||||
// Set zoom to 2x if available. This helps encourage the user to pull back.
|
|
||||||
// Some devices like the Behold have a zoom parameter
|
|
||||||
parameters.set("zoom", "2.0");
|
|
||||||
// Most devices, like the Hero, appear to expose this zoom parameter.
|
|
||||||
// (I think) This means 2.0x
|
|
||||||
parameters.set("taking-picture-zoom", "20");
|
|
||||||
|
|
||||||
camera.setParameters(parameters);
|
camera.setParameters(parameters);
|
||||||
}
|
}
|
||||||
|
@ -386,7 +380,7 @@ final class CameraManager {
|
||||||
previewSize = previewSize.trim();
|
previewSize = previewSize.trim();
|
||||||
int dimPosition = previewSize.indexOf('x');
|
int dimPosition = previewSize.indexOf('x');
|
||||||
if (dimPosition < 0) {
|
if (dimPosition < 0) {
|
||||||
Log.w(TAG, "Bad preview-size");
|
Log.w(TAG, "Bad preview-size: " + previewSize);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -396,7 +390,7 @@ final class CameraManager {
|
||||||
newX = Integer.parseInt(previewSize.substring(0, dimPosition));
|
newX = Integer.parseInt(previewSize.substring(0, dimPosition));
|
||||||
newY = Integer.parseInt(previewSize.substring(dimPosition + 1));
|
newY = Integer.parseInt(previewSize.substring(dimPosition + 1));
|
||||||
} catch (NumberFormatException nfe) {
|
} catch (NumberFormatException nfe) {
|
||||||
Log.w(TAG, "Bad preview-size");
|
Log.w(TAG, "Bad preview-size: " + previewSize);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -419,4 +413,74 @@ final class CameraManager {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setFlash(Camera.Parameters parameters) {
|
||||||
|
// FIXME: This is a hack to turn the flash off on the Samsung Galaxy.
|
||||||
|
parameters.set("flash-value", 2);
|
||||||
|
// This is the standard setting to turn the flash off that all devices should honor.
|
||||||
|
parameters.set("flash-mode", "off");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setZoom(Camera.Parameters parameters) {
|
||||||
|
|
||||||
|
String zoomSupportedString = parameters.get("zoom-supported");
|
||||||
|
if (zoomSupportedString != null && !Boolean.parseBoolean(zoomSupportedString)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tenDesiredZoom = TEN_DESIRED_ZOOM;
|
||||||
|
|
||||||
|
String maxZoomString = parameters.get("max-zoom");
|
||||||
|
if (maxZoomString != null) {
|
||||||
|
try {
|
||||||
|
int tenMaxZoom = (int) (10.0 * Double.parseDouble(maxZoomString));
|
||||||
|
if (tenDesiredZoom > tenMaxZoom) {
|
||||||
|
tenDesiredZoom = tenMaxZoom;
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
Log.w(TAG, "Bad max-zoom: " + maxZoomString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String takingPictureZoomString = parameters.get("taking-picture-zoom-max");
|
||||||
|
if (takingPictureZoomString != null) {
|
||||||
|
try {
|
||||||
|
int tenMaxZoom = Integer.parseInt(takingPictureZoomString);
|
||||||
|
if (tenDesiredZoom > tenMaxZoom) {
|
||||||
|
tenDesiredZoom = tenMaxZoom;
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
Log.w(TAG, "Bad taking-picture-zoom-max: " + takingPictureZoomString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Set zoom. This helps encourage the user to pull back.
|
||||||
|
// Some devices like the Behold have a zoom parameter
|
||||||
|
parameters.set("zoom", String.valueOf(tenDesiredZoom / 10.0));
|
||||||
|
|
||||||
|
// Most devices, like the Hero, appear to expose this zoom parameter.
|
||||||
|
// It takes on values like "27" which appears to mean 2.7x zoom
|
||||||
|
parameters.set("taking-picture-zoom", tenDesiredZoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
private void setSharpness(Camera.Parameters parameters) {
|
||||||
|
|
||||||
|
int desiredSharpness = DESIRED_SHARPNESS;
|
||||||
|
|
||||||
|
String maxSharpnessString = parameters.get("sharpness-max");
|
||||||
|
if (maxSharpnessString != null) {
|
||||||
|
try {
|
||||||
|
int maxSharpness = Integer.parseInt(maxSharpnessString);
|
||||||
|
if (desiredSharpness > maxSharpness) {
|
||||||
|
desiredSharpness = maxSharpness;
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
Log.w(TAG, "Bad sharpness-max: " + maxSharpnessString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parameters.set("sharpness", desiredSharpness);
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue