package com.google.zxing.client.android;
+import com.google.zxing.ResultPoint;
+
import android.content.Context;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.SurfaceHolder;
import android.view.WindowManager;
-import com.google.zxing.ResultPoint;
+
+import java.io.IOException;
/**
* This object wraps the Camera service object and expects to be the only one talking to it. The
mPreviewing = false;
}
- public void openDriver(SurfaceHolder holder) {
+ public void openDriver(SurfaceHolder holder) throws IOException {
if (mCamera == null) {
mCamera = Camera.open();
mCamera.setPreviewDisplay(holder);
if (mCamera != null && mPreviewing) {
mPreviewHandler = handler;
mPreviewMessage = message;
- mCamera.setPreviewCallback(previewCallback);
+ mCamera.setOneShotPreviewCallback(previewCallback);
}
}
*/
public Rect getFramingRect() {
if (mFramingRect == null) {
- int size = ((mScreenResolution.x < mScreenResolution.y) ? mScreenResolution.x :
+ int size = (mScreenResolution.x < mScreenResolution.y ? mScreenResolution.x :
mScreenResolution.y) * 3 / 4;
int leftOffset = (mScreenResolution.x - size) / 2;
int topOffset = (mScreenResolution.y - size) / 2;
*/
private final Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
- camera.setPreviewCallback(null);
if (mPreviewHandler != null) {
Message message = mPreviewHandler.obtainMessage(mPreviewMessage, mScreenResolution.x,
mScreenResolution.y, data);
if (mAutoFocusHandler != null) {
Message message = mAutoFocusHandler.obtainMessage(mAutoFocusMessage, success);
// Simulate continuous autofocus by sending a focus request every 1.5 seconds.
- mAutoFocusHandler.sendMessageDelayed(message, 1500);
+ mAutoFocusHandler.sendMessageDelayed(message, 1500L);
mAutoFocusHandler = null;
}
}
private void setCameraParameters() {
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(mScreenResolution.x, mScreenResolution.y);
+
+ // Disables the built-in flash if present. Hopefully devices will honor this setting.
+ parameters.set("flash-mode", "off");
mCamera.setParameters(parameters);
Log.v(TAG, "Setting params for preview: width " + mScreenResolution.x + " height " +
mScreenResolution.y);