diff options
author | codeworkx <codeworkx@cyanogenmod.org> | 2016-01-06 12:25:10 +0100 |
---|---|---|
committer | Chippa-a <vusal1372@gmail.com> | 2019-10-25 15:55:25 +0300 |
commit | c095a7b1870230d9d1e4c991c1dc1a29a1cc8dcd (patch) | |
tree | ea27604d9ab587c87d3d2456b891921b7bfe9c2d | |
parent | e043aa1a45655c813fad57cee05e8c0588add0ec (diff) | |
download | android_packages_apps_Snap-c095a7b1870230d9d1e4c991c1dc1a29a1cc8dcd.tar.gz android_packages_apps_Snap-c095a7b1870230d9d1e4c991c1dc1a29a1cc8dcd.tar.bz2 android_packages_apps_Snap-c095a7b1870230d9d1e4c991c1dc1a29a1cc8dcd.zip |
Snap: Add support for mw_continuous-picture focus mode
Author: codeworkx <codeworkx@cyanogenmod.org>
Date: Wed Jan 6 12:25:10 2016 +0100
Snap: Add support for mw_continuous-picture focus mode
Change-Id: If165370b52d7454c69e2cdeb9d837d049010b0e8
Author: Michael W <baddaemon87@gmail.com>
Date: Sat Oct 22 14:47:09 2016 +0200
Snap: Fix possible NPE
Seems like getSupportedFocusModes() can return null.
Check for null before using it further
Change-Id: I46860f780b99970cbe9857c8ba73691d69321488
Reference: BugDumps 20161014-20 L#131
Change-Id: I066a26043cc89b3037e457d8da340ed4b005ee1f
-rw-r--r-- | res/values/arrays.xml | 3 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 1 | ||||
-rwxr-xr-x | src/com/android/camera/PhotoModule.java | 47 | ||||
-rwxr-xr-x | src/com/android/camera/util/CameraUtil.java | 1 |
4 files changed, 40 insertions, 12 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index b1d3b38fb..ec7130af6 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -311,6 +311,7 @@ <string-array name="pref_camera_focusmode_entries" translatable="false"> <item>@string/pref_camera_focusmode_entry_auto</item> <item>@string/pref_camera_focusmode_entry_continuous</item> + <item>@string/pref_camera_focusmode_entry_mw_continuous</item> <item>@string/pref_camera_focusmode_entry_extended</item> <item>@string/pref_camera_focusmode_entry_facedetect</item> <item>@string/pref_camera_focusmode_entry_facepriority</item> @@ -325,6 +326,7 @@ <string-array name="pref_camera_focusmode_entryvalues" translatable="false"> <item>auto</item> <item>continuous-picture</item> + <item>mw_continuous-picture</item> <item>extended</item> <item>facedetect</item> <item>face-priority</item> @@ -788,6 +790,7 @@ <!-- Default focus mode setting.--> <string-array name="pref_camera_focusmode_default_array" translatable="false"> + <item>mw_continuous-picture</item> <item>continuous-picture</item> <item>auto</item> </string-array> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index bf2766c5b..a5fb6d53e 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -62,6 +62,7 @@ <!-- Settings screen, focus mode --> <string name="pref_camera_focusmode_entry_continuous">Continuous</string> + <string name="pref_camera_focusmode_entry_mw_continuous">Continuous (MW)</string> <string name="pref_camera_focusmode_entry_extended">Extended</string> <string name="pref_camera_focusmode_entry_facedetect">Face detect</string> <string name="pref_camera_focusmode_entry_facepriority">Face priority</string> diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index d7338cf48..23f83819a 100755 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1321,6 +1321,8 @@ public class PhotoModule @Override public void onPictureTaken(byte [] jpegData, CameraProxy camera) { + String focusMode; + mUI.stopSelfieFlash(); mUI.enableShutter(true); if (mUI.isPreviewCoverVisible()) { @@ -1403,15 +1405,17 @@ public class PhotoModule if (needRestartPreview) { setupPreview(); - if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals( - mFocusManager.getFocusMode())) { + focusMode = mFocusManager.getFocusMode(); + if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(focusMode) || + CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(focusMode)) { mCameraDevice.cancelAutoFocus(); } } else if ((mReceivedSnapNum == mBurstSnapNum) && (mCameraState != LONGSHOT)){ mFocusManager.resetTouchFocus(); - if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals( - mFocusManager.getFocusMode())) { + focusMode = mFocusManager.getFocusMode(); + if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(focusMode) || + CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(focusMode)) { mCameraDevice.cancelAutoFocus(); } mUI.resumeFaceDetection(); @@ -2991,6 +2995,8 @@ public class PhotoModule return; } + String focusMode; + synchronized (mCameraDevice) { SurfaceHolder sh = null; Log.v(TAG, "startPreview: SurfaceHolder (MDP path)"); @@ -3035,7 +3041,10 @@ 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()) && mCameraState !=INIT) { + focusMode = mFocusManager.getFocusMode(); + if (CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE.equals(focusMode) && + mCameraState != INIT || + CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE.equals(focusMode)) { mCameraDevice.cancelAutoFocus(); } } else { @@ -3663,10 +3672,16 @@ public class PhotoModule mParameters.set(KEY_PICTURE_FORMAT, PIXEL_FORMAT_JPEG); //Try to set CAF for ZSL - if(CameraUtil.isSupported(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE, - mParameters.getSupportedFocusModes()) && !mFocusManager.isTouch()) { - mFocusManager.overrideFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); - mParameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); + if (!mFocusManager.isTouch()) { + if (CameraUtil.isSupported(CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE, + mParameters.getSupportedFocusModes())) { + mFocusManager.overrideFocusMode(CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE); + mParameters.setFocusMode(CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE); + } else if (CameraUtil.isSupported(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE, + mParameters.getSupportedFocusModes())) { + mFocusManager.overrideFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); + mParameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); + } } else if (mFocusManager.isTouch()) { mFocusManager.overrideFocusMode(null); mParameters.setFocusMode(mFocusManager.getFocusMode()); @@ -4289,7 +4304,8 @@ public class PhotoModule @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void updateAutoFocusMoveCallback() { - if (mParameters.getFocusMode().equals(CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE)) { + if (mParameters.getFocusMode().equals(CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE) || + mParameters.getFocusMode().equals(CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE)) { mCameraDevice.setAutoFocusMoveCallback(mHandler, (CameraAFMoveCallback) mAutoFocusMoveCallback); } else { @@ -5029,8 +5045,15 @@ public class PhotoModule mMeteringAreaSupported = CameraUtil.isMeteringAreaSupported(mInitialParams); mAeLockSupported = CameraUtil.isAutoExposureLockSupported(mInitialParams); mAwbLockSupported = CameraUtil.isAutoWhiteBalanceLockSupported(mInitialParams); - mContinuousFocusSupported = mInitialParams.getSupportedFocusModes().contains( - CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE); + + List<String> supportedFocusModes = mInitialParams.getSupportedFocusModes(); + if (supportedFocusModes != null && + (supportedFocusModes.contains(CameraUtil.FOCUS_MODE_CONTINUOUS_PICTURE) || + supportedFocusModes.contains(CameraUtil.FOCUS_MODE_MW_CONTINUOUS_PICTURE))) { + mContinuousFocusSupported = true; + } else { + mContinuousFocusSupported = false; + } } @Override diff --git a/src/com/android/camera/util/CameraUtil.java b/src/com/android/camera/util/CameraUtil.java index 32db13306..072aad474 100755 --- a/src/com/android/camera/util/CameraUtil.java +++ b/src/com/android/camera/util/CameraUtil.java @@ -135,6 +135,7 @@ public class CameraUtil { public static final String SECURE_CAMERA_EXTRA = "secure_camera"; // Fields from android.hardware.Camera.Parameters public static final String FOCUS_MODE_CONTINUOUS_PICTURE = "continuous-picture"; + public static final String FOCUS_MODE_MW_CONTINUOUS_PICTURE = "mw_continuous-picture"; public static final String RECORDING_HINT = "recording-hint"; private static final String AUTO_EXPOSURE_LOCK_SUPPORTED = "auto-exposure-lock-supported"; private static final String AUTO_WHITE_BALANCE_LOCK_SUPPORTED = "auto-whitebalance-lock-supported"; |