summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorChih-yu Huang <akahuang@google.com>2011-11-04 12:07:53 +0800
committerChih-Chung Chang <chihchung@google.com>2011-11-07 12:25:35 +0800
commitf78664a2246e7eac2b3c948b79b9d51a7de62965 (patch)
treeb654c4ad99140e4609f5397da75580898391365f /src/com
parent781528e1c86aa16d72694510898325d65e32c35b (diff)
downloadLegacyCamera-f78664a2246e7eac2b3c948b79b9d51a7de62965.zip
LegacyCamera-f78664a2246e7eac2b3c948b79b9d51a7de62965.tar.gz
LegacyCamera-f78664a2246e7eac2b3c948b79b9d51a7de62965.tar.bz2
Prevent starting face detection twice.
bug:5563371 Change-Id: I23231c4c629ab85f203470368d40d67c91e43db2
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/camera/Camera.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index 9c7bbfe..1fad8a8 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -143,6 +143,7 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
private GestureDetector mPopupGestureDetector;
private boolean mOpenCameraFail = false;
private boolean mCameraDisabled = false;
+ private boolean mFaceDetectionStarted = false;
private View mPreviewPanel; // The container of PreviewFrameLayout.
private PreviewFrameLayout mPreviewFrameLayout;
@@ -520,7 +521,9 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
@Override
public void startFaceDetection() {
+ if (mFaceDetectionStarted || mCameraState != IDLE) return;
if (mParameters.getMaxNumDetectedFaces() > 0) {
+ mFaceDetectionStarted = true;
mFaceView = (FaceView) findViewById(R.id.face_view);
mFaceView.clear();
mFaceView.setVisibility(View.VISIBLE);
@@ -535,7 +538,9 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
@Override
public void stopFaceDetection() {
+ if (!mFaceDetectionStarted) return;
if (mParameters.getMaxNumDetectedFaces() > 0) {
+ mFaceDetectionStarted = false;
mCameraDevice.setFaceDetectionListener(null);
mCameraDevice.stopFaceDetection();
if (mFaceView != null) mFaceView.clear();
@@ -982,6 +987,7 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
mCameraDevice.takePicture(mShutterCallback, mRawPictureCallback,
mPostViewPictureCallback, new JpegPictureCallback(loc));
+ mFaceDetectionStarted = false;
setCameraState(SNAPSHOT_IN_PROGRESS);
return true;
}
@@ -1461,7 +1467,7 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
initializeCapabilities();
resetExposureCompensation();
startPreview();
- if (mFirstTimeInitialized) startFaceDetection();
+ startFaceDetection();
} catch (CameraHardwareException e) {
Util.showErrorAndFinish(this, R.string.cannot_connect_camera);
return;
@@ -1683,7 +1689,7 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
// display rotation in onCreate may not be what we want.
if (mCameraState == PREVIEW_STOPPED) {
startPreview();
- if (mFirstTimeInitialized) startFaceDetection();
+ startFaceDetection();
} else {
if (Util.getDisplayRotation(this) != mDisplayRotation) {
setDisplayOrientation();
@@ -1717,6 +1723,7 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
private void closeCamera() {
if (mCameraDevice != null) {
CameraHolder.instance().release();
+ mFaceDetectionStarted = false;
mCameraDevice.setZoomChangeListener(null);
mCameraDevice.setFaceDetectionListener(null);
mCameraDevice.setErrorCallback(null);
@@ -1795,6 +1802,7 @@ public class Camera extends ActivityBase implements FocusManager.Listener,
Log.v(TAG, "stopPreview");
mCameraDevice.cancelAutoFocus(); // Reset the focus.
mCameraDevice.stopPreview();
+ mFaceDetectionStarted = false;
}
setCameraState(PREVIEW_STOPPED);
mFocusManager.onPreviewStopped();