From b82082a43cf3153a0dec9f288d8c358b9b39703a Mon Sep 17 00:00:00 2001 From: Sultanxda Date: Tue, 8 Sep 2015 21:32:48 -0700 Subject: SnapdragonCamera: Add focus-mode option to camcorder User can now control the focus mode used while recording video. Change-Id: I340c01a3f88314de67ca024279672276eff453ed Signed-off-by: Sultanxda --- res/values/arrays.xml | 5 ----- res/values/cm_arrays.xml | 16 ++++++++++++++ res/xml/video_preferences.xml | 7 +++++++ src/com/android/camera/CameraSettings.java | 6 ++++++ src/com/android/camera/FocusOverlayManager.java | 13 ++++++++---- src/com/android/camera/PhotoModule.java | 28 ++++++++++++------------- src/com/android/camera/VideoMenu.java | 4 ++-- src/com/android/camera/VideoModule.java | 7 +++++-- 8 files changed, 59 insertions(+), 27 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 2a86e0943..642bd4824 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -794,11 +794,6 @@ auto - - continuous-video - auto - - @drawable/ic_exposure_n3 diff --git a/res/values/cm_arrays.xml b/res/values/cm_arrays.xml index d3414355d..7a1aeded0 100644 --- a/res/values/cm_arrays.xml +++ b/res/values/cm_arrays.xml @@ -92,4 +92,20 @@ 30 + + + continuous-video + auto + + + + + @string/pref_camera_focusmode_entry_auto + @string/pref_camera_focusmode_entry_continuous + + + + auto + continuous-video + diff --git a/res/xml/video_preferences.xml b/res/xml/video_preferences.xml index a1902adfa..2d148163c 100644 --- a/res/xml/video_preferences.xml +++ b/res/xml/video_preferences.xml @@ -194,6 +194,13 @@ camera:singleIcon="@drawable/ic_settings_rotation" camera:entries="@array/pref_camera_video_rotation_entries" camera:entryValues="@array/pref_camera_video_rotation_entryvalues" /> + supportedFocusModes = mParameters.getSupportedFocusModes(); @@ -448,8 +448,13 @@ public class FocusOverlayManager { mFocusMode = Parameters.FOCUS_MODE_AUTO; } else { // The default is continuous autofocus. - mFocusMode = mPreferences.getString( - CameraSettings.KEY_FOCUS_MODE, null); + if (fromVideo) { + mFocusMode = mPreferences.getString( + CameraSettings.KEY_VIDEOCAMERA_FOCUS_MODE, null); + } else { + mFocusMode = mPreferences.getString( + CameraSettings.KEY_FOCUS_MODE, null); + } // Try to find a supported focus mode from the default list. if (mFocusMode == null) { @@ -549,7 +554,7 @@ public class FocusOverlayManager { } private boolean needAutoFocusCall() { - String focusMode = getFocusMode(); + String focusMode = getFocusMode(false); return !(focusMode.equals(Parameters.FOCUS_MODE_INFINITY) || focusMode.equals(Parameters.FOCUS_MODE_FIXED) || focusMode.equals(Parameters.FOCUS_MODE_EDOF)); diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 2c6fa88b7..3b8ab2a13 100755 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1368,15 +1368,15 @@ public class PhotoModule if (needRestartPreview) { Log.d(TAG, "JpegPictureCallback: needRestartPreview"); setupPreview(); - if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode()) - || CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode())) { + if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode(false)) + || CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode(false))) { mCameraDevice.cancelAutoFocus(); } } else if ((mReceivedSnapNum == mBurstSnapNum) && (mCameraState != LONGSHOT)){ mFocusManager.resetTouchFocus(); - if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode()) - || CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode())) { + if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode(false)) + || CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode(false))) { mCameraDevice.cancelAutoFocus(); } if (!mIsImageCaptureIntent) { @@ -1847,7 +1847,7 @@ public class PhotoModule } if ((mManual3AEnabled & MANUAL_FOCUS) != 0) { mUI.overrideSettings(CameraSettings.KEY_FOCUS_MODE, - mFocusManager.getFocusMode()); + mFocusManager.getFocusMode(false)); } } @@ -1953,7 +1953,7 @@ public class PhotoModule if (!Parameters.SCENE_MODE_AUTO.equals(mSceneMode)) { flashMode = mParameters.FLASH_MODE_OFF; String whiteBalance = Parameters.WHITE_BALANCE_AUTO; - focusMode = mFocusManager.getFocusMode(); + focusMode = mFocusManager.getFocusMode(false); colorEffect = mParameters.getColorEffect(); String defaultEffect = mActivity.getString(R.string.pref_camera_coloreffect_default); if (CameraUtil.SCENE_MODE_HDR.equals(mSceneMode)) { @@ -2966,8 +2966,8 @@ public class PhotoModule if (!mSnapshotOnIdle && !mInstantCaptureSnapShot) { // If the focus mode is continuous autofocus, call cancelAutoFocus to // resume it because it may have been paused by autoFocus call. - if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode()) || - CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode())) { + if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode(false)) || + CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(mFocusManager.getFocusMode(false))) { mCameraDevice.cancelAutoFocus(); } } else { @@ -3598,10 +3598,10 @@ public class PhotoModule } } else if (mFocusManager.isTouch()) { mFocusManager.overrideFocusMode(null); - mParameters.setFocusMode(mFocusManager.getFocusMode()); + mParameters.setFocusMode(mFocusManager.getFocusMode(false)); } else { // If not supported use the current mode - mFocusManager.overrideFocusMode(mFocusManager.getFocusMode()); + mFocusManager.overrideFocusMode(mFocusManager.getFocusMode(false)); } if (!pictureFormat.equals(PIXEL_FORMAT_JPEG)) { @@ -3618,7 +3618,7 @@ public class PhotoModule mFocusManager.setZslEnable(false); if ((mManual3AEnabled & MANUAL_FOCUS) == 0) { mFocusManager.overrideFocusMode(null); - mParameters.setFocusMode(mFocusManager.getFocusMode()); + mParameters.setFocusMode(mFocusManager.getFocusMode(false)); } } @@ -3798,7 +3798,7 @@ public class PhotoModule // initialize focus mode if ((mManual3AEnabled & MANUAL_FOCUS) == 0) { mFocusManager.overrideFocusMode(null); - mParameters.setFocusMode(mFocusManager.getFocusMode()); + mParameters.setFocusMode(mFocusManager.getFocusMode(false)); } // Set picture size. @@ -4033,7 +4033,7 @@ public class PhotoModule mParameters.setFocusMode(Parameters.FOCUS_MODE_INFINITY); } else if ((mManual3AEnabled & MANUAL_FOCUS) == 0) { mFocusManager.overrideFocusMode(null); - mParameters.setFocusMode(mFocusManager.getFocusMode()); + mParameters.setFocusMode(mFocusManager.getFocusMode(false)); } // Set focus time. @@ -4293,7 +4293,7 @@ public class PhotoModule alert.show(); } else { mManual3AEnabled &= ~MANUAL_FOCUS; - mParameters.setFocusMode(mFocusManager.getFocusMode()); + mParameters.setFocusMode(mFocusManager.getFocusMode(false)); mUI.overrideSettings(CameraSettings.KEY_FOCUS_MODE, null); updateCommonManual3ASettings(); onSharedPreferenceChanged(); diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 9de83a1a1..1d55f20d7 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -112,7 +112,7 @@ public class VideoMenu extends MenuController mOtherKeys1 = new String[] { CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE, CameraSettings.KEY_VIDEO_QUALITY, - CameraSettings.KEY_FOCUS_TIME, + CameraSettings.KEY_VIDEOCAMERA_FOCUS_MODE, CameraSettings.KEY_RECORD_LOCATION, CameraSettings.KEY_CAMERA_SAVEPATH, CameraSettings.KEY_EXPOSURE, @@ -125,7 +125,7 @@ public class VideoMenu extends MenuController mOtherKeys2 = new String[] { CameraSettings.KEY_VIDEOCAMERA_FLASH_MODE, CameraSettings.KEY_VIDEO_QUALITY, - CameraSettings.KEY_FOCUS_TIME, + CameraSettings.KEY_VIDEOCAMERA_FOCUS_MODE, CameraSettings.KEY_RECORD_LOCATION, CameraSettings.KEY_CAMERA_SAVEPATH, CameraSettings.KEY_EXPOSURE, diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index f2d23a9ce..065f3912b 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -609,7 +609,7 @@ public class VideoModule implements CameraModule, if (mMeteringAreaSupported) mParameters.setMeteringAreas(mFocusManager.getMeteringAreas()); if (mFocusAreaSupported || mMeteringAreaSupported) { - mParameters.setFocusMode(mFocusManager.getFocusMode()); + mParameters.setFocusMode(mFocusManager.getFocusMode(true)); mCameraDevice.setParameters(mParameters); } } @@ -2748,6 +2748,9 @@ public class VideoModule implements CameraModule, //set power mode settings updatePowerMode(); + // Set focus mode + mParameters.setFocusMode(mFocusManager.getFocusMode(true)); + // Set face detetction parameter. String faceDetection = mPreferences.getString( CameraSettings.KEY_FACE_DETECTION, @@ -2825,7 +2828,7 @@ public class VideoModule implements CameraModule, } // Set focus mode - mParameters.setFocusMode(mFocusManager.getFocusMode()); + mParameters.setFocusMode(mFocusManager.getFocusMode(true)); mParameters.set(CameraUtil.RECORDING_HINT, CameraUtil.TRUE); -- cgit v1.2.3