diff options
Diffstat (limited to 'src/com/android/camera/CaptureModule.java')
-rw-r--r-- | src/com/android/camera/CaptureModule.java | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 33498f070..f360e371b 100644 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -144,6 +144,10 @@ public class CaptureModule implements CameraModule, PhotoController, * Camera state: Waiting for the touch-to-focus to converge. */ private static final int STATE_WAITING_TOUCH_FOCUS = 5; + /** + * Camera state: Focus and exposure has been locked and converged. + */ + private static final int STATE_AF_AE_LOCKED = 6; private static final String TAG = "SnapCam_CaptureModule"; // Used for check memory status for longshot mode @@ -516,8 +520,7 @@ public class CaptureModule implements CameraModule, PhotoController, // CONTROL_AE_STATE can be null on some devices if (aeState == null || (aeState == CaptureResult .CONTROL_AE_STATE_CONVERGED) && isFlashOff(id)) { - mState[id] = STATE_PICTURE_TAKEN; - captureStillPicture(id); + checkAfAeStatesAndCapture(id); } else { runPrecaptureSequence(id); } @@ -542,8 +545,7 @@ public class CaptureModule implements CameraModule, PhotoController, Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE); Log.d(TAG, "STATE_WAITING_NON_PRECAPTURE id: " + id + " aeState:" + aeState); if (aeState == null || aeState != CaptureResult.CONTROL_AE_STATE_PRECAPTURE) { - mState[id] = STATE_PICTURE_TAKEN; - captureStillPicture(id); + checkAfAeStatesAndCapture(id); } break; } @@ -552,6 +554,22 @@ public class CaptureModule implements CameraModule, PhotoController, } } + private void checkAfAeStatesAndCapture(int id) { + if(isBackCamera() && getCameraMode() == DUAL_MODE) { + mState[id] = STATE_AF_AE_LOCKED; + if(mState[BAYER_ID] == STATE_AF_AE_LOCKED && + mState[MONO_ID] == STATE_AF_AE_LOCKED) { + mState[BAYER_ID] = STATE_PICTURE_TAKEN; + mState[MONO_ID] = STATE_PICTURE_TAKEN; + captureStillPicture(BAYER_ID); + captureStillPicture(MONO_ID); + } + } else { + mState[id] = STATE_PICTURE_TAKEN; + captureStillPicture(id); + } + } + public void startFaceDetection() { mUI.onStartFaceDetection(mDisplayOrientation, mSettingsManager.isFacingFront(getMainCameraId()), |