summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/camera/PhotoModule.java41
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);