diff options
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index db12222c3..08d5a0a77 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -326,6 +326,7 @@ public class PhotoModule private FocusOverlayManager mFocusManager; private String mSceneMode; + private String mSavedFlashMode = null; private final Handler mHandler = new MainHandler(); private MessageQueue.IdleHandler mIdleHandler = null; @@ -1773,7 +1774,7 @@ public class PhotoModule pref_camera_coloreffect_default); exposureCompensation = CameraSettings.EXPOSURE_DEFAULT_VALUE; - overrideCameraSettings(flashMode, null, focusMode, + overrideCameraSettings(null, null, focusMode, exposureCompensation, null, null, null, null, colorEffect, sceneMode, redeyeReduction, aeBracketing); @@ -1803,7 +1804,7 @@ public class PhotoModule exposureCompensation = Integer.toString(mParameters.getExposureCompensation()); - overrideCameraSettings(flashMode, whiteBalance, focusMode, + overrideCameraSettings(null, whiteBalance, focusMode, exposureCompensation, mParameters.getAutoExposure(), getSaturationSafe(), @@ -1813,7 +1814,7 @@ public class PhotoModule sceneMode, redeyeReduction, aeBracketing); } else if (mFocusManager.isZslEnabled()) { focusMode = mParameters.getFocusMode(); - overrideCameraSettings(flashMode, null, focusMode, + overrideCameraSettings(null, null, focusMode, exposureCompensation, null, null, null, null, colorEffect, sceneMode, redeyeReduction, aeBracketing); @@ -1821,7 +1822,7 @@ public class PhotoModule if (mManual3AEnabled > 0) { updateCommonManual3ASettings(); } else { - overrideCameraSettings(flashMode, null, focusMode, + overrideCameraSettings(null, null, focusMode, exposureCompensation, null, null, null, null, colorEffect, sceneMode, redeyeReduction, aeBracketing); @@ -1830,9 +1831,8 @@ public class PhotoModule /* Disable focus if aebracket is ON */ String aeBracket = mParameters.get(CameraSettings.KEY_QC_AE_BRACKETING); if (aeBracket != null && !aeBracket.equalsIgnoreCase("off")) { - String fMode = Parameters.FLASH_MODE_OFF; - mUI.overrideSettings(CameraSettings.KEY_FLASH_MODE, fMode); - mParameters.setFlashMode(fMode); + flashMode = Parameters.FLASH_MODE_OFF; + mParameters.setFlashMode(flashMode); } if (disableLongShot) { mUI.overrideSettings(CameraSettings.KEY_LONGSHOT, @@ -1840,6 +1840,25 @@ public class PhotoModule } else { mUI.overrideSettings(CameraSettings.KEY_LONGSHOT, null); } + + if (flashMode == null) { + // Restore saved flash mode or default mode + if (mSavedFlashMode == null) { + mSavedFlashMode = mPreferences.getString( + CameraSettings.KEY_FLASH_MODE, + mActivity.getString(R.string.pref_camera_flashmode_default)); + } + mUI.setPreference(CameraSettings.KEY_FLASH_MODE, mSavedFlashMode); + mSavedFlashMode = null; + } else { + // Save the current flash mode + if (mSavedFlashMode == null) { + mSavedFlashMode = mPreferences.getString( + CameraSettings.KEY_FLASH_MODE, + mActivity.getString(R.string.pref_camera_flashmode_default)); + } + mUI.overrideSettings(CameraSettings.KEY_FLASH_MODE, flashMode); + } } private void overrideCameraSettings(final String flashMode, @@ -3497,9 +3516,15 @@ public class PhotoModule if (Parameters.SCENE_MODE_AUTO.equals(mSceneMode)) { // Set flash mode. - String flashMode = mPreferences.getString( + String flashMode; + if (mSavedFlashMode == null) { + flashMode = mPreferences.getString( CameraSettings.KEY_FLASH_MODE, mActivity.getString(R.string.pref_camera_flashmode_default)); + } else { + flashMode = mSavedFlashMode; + } + List<String> supportedFlash = mParameters.getSupportedFlashModes(); if (CameraUtil.isSupported(flashMode, supportedFlash)) { mParameters.setFlashMode(flashMode); |