From fe1043717bca62c00f0da3f49528071ab05de282 Mon Sep 17 00:00:00 2001 From: Sultanxda Date: Sun, 6 Dec 2015 10:30:28 -0800 Subject: Snap: Add ability to set the tap-to-focus duration to 0 sec Setting a tap-to-focus duration of 0 seconds allows for a quick, manual refocus of the subject without interfering with the exposure. This is particularly useful when recording videos. [mikeioannina]: Adapted to Snap Change-Id: Ie3d92e50f755c938e9725438ba5baad0d0985485 Signed-off-by: Sultanxda --- res/values/cm_arrays.xml | 4 +++- res/values/cm_strings.xml | 1 + src/com/android/camera/FocusOverlayManager.java | 23 +++++++++++++++-------- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml index 7a1aeded0..1a44ad17c 100644 --- a/res/values/cm_arrays.xml +++ b/res/values/cm_arrays.xml @@ -27,6 +27,7 @@ + @string/pref_camera_focustime_entry_0 @string/pref_camera_focustime_entry_5 @string/pref_camera_focustime_entry_10 @string/pref_camera_focustime_entry_15 @@ -37,12 +38,13 @@ + 200 5000 10000 15000 20000 30000 - 0 + 0x7FFFFFFF diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index c0ddc5a37..03b14afec 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -200,6 +200,7 @@ Touch focus duration 5000 + 0s 5s 10s 15s diff --git a/src/com/android/camera/FocusOverlayManager.java b/src/com/android/camera/FocusOverlayManager.java index 5fcc8e9be..405237744 100644 --- a/src/com/android/camera/FocusOverlayManager.java +++ b/src/com/android/camera/FocusOverlayManager.java @@ -269,8 +269,10 @@ public class FocusOverlayManager { if (focused) { mState = STATE_SUCCESS; // Lock exposure and white balance - setAeAwbLock(true); - mListener.setFocusParameters(); + if (mFocusTime != 200) { + setAeAwbLock(true); + mListener.setFocusParameters(); + } } else { mState = STATE_FAIL; } @@ -282,14 +284,16 @@ public class FocusOverlayManager { if (focused) { mState = STATE_SUCCESS; // Lock exposure and white balance - setAeAwbLock(true); - mListener.setFocusParameters(); + if (mFocusTime != 200) { + setAeAwbLock(true); + mListener.setFocusParameters(); + } } else { mState = STATE_FAIL; } // If this is triggered by touch focus, cancel focus after a // while. - if ((mFocusArea != null) && (mFocusTime != 0)) { + if (mFocusArea != null) { mHandler.sendEmptyMessageDelayed(RESET_TOUCH_FOCUS, mFocusTime); } if (shutterButtonPressed) { @@ -389,15 +393,18 @@ public class FocusOverlayManager { // Stop face detection because we want to specify focus and metering area. mListener.stopFaceDetection(); + if (mFocusTime == 200) { + setAeAwbLock(true); + mListener.setFocusParameters(); + } + // Set the focus area and metering area. mListener.setFocusParameters(); if (mFocusAreaSupported) { autoFocus(); } else { // Just show the indicator in all other cases. mHandler.removeMessages(RESET_TOUCH_FOCUS); - if (mFocusTime != 0) { - mHandler.sendEmptyMessageDelayed(RESET_TOUCH_FOCUS, mFocusTime); - } + mHandler.sendEmptyMessageDelayed(RESET_TOUCH_FOCUS, mFocusTime); } } -- cgit v1.2.3