diff options
author | Wu-cheng Li <wuchengli@google.com> | 2012-09-28 18:36:26 +0800 |
---|---|---|
committer | Wu-cheng Li <wuchengli@google.com> | 2012-10-02 14:02:49 +0800 |
commit | ad30bda0d0103bd8a93eb834c234341b1ab1e77f (patch) | |
tree | f8d8f623db123d242dc53532cbb82cef38358732 /src | |
parent | 999eb5f1da387786883150953930f88274ca9ffe (diff) | |
download | Camera-ad30bda0d0103bd8a93eb834c234341b1ab1e77f.tar.gz |
Put HDR as a separate setting in the overflow settings dialog.
bug:7222328
Change-Id: I7851f627caca01e2c31cb7b8bfb2bb08e51586a5
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/CameraSettings.java | 6 | ||||
-rw-r--r-- | src/com/android/camera/PhotoController.java | 31 | ||||
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 13 | ||||
-rw-r--r-- | src/com/android/camera/PieController.java | 4 | ||||
-rw-r--r-- | src/com/android/camera/Util.java | 6 | ||||
-rw-r--r-- | src/com/android/camera/ui/InLineSettingItem.java | 4 | ||||
-rw-r--r-- | src/com/android/camera/ui/IndicatorButton.java | 5 | ||||
-rw-r--r-- | src/com/android/camera/ui/IndicatorControl.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/ui/OtherSettingsPopup.java | 6 |
9 files changed, 63 insertions, 14 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index 648ac42b..46351200 100644 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -54,6 +54,7 @@ public class CameraSettings { public static final String KEY_EXPOSURE = "pref_camera_exposure_key"; public static final String KEY_VIDEO_EFFECT = "pref_video_effect_key"; public static final String KEY_CAMERA_ID = "pref_camera_id_key"; + public static final String KEY_CAMERA_HDR = "pref_camera_hdr_key"; public static final String KEY_CAMERA_FIRST_USE_HINT_SHOWN = "pref_camera_first_use_hint_shown_key"; public static final String KEY_VIDEO_FIRST_USE_HINT_SHOWN = "pref_video_first_use_hint_shown_key"; @@ -153,6 +154,7 @@ public class CameraSettings { ListPreference videoFlashMode = group.findPreference(KEY_VIDEOCAMERA_FLASH_MODE); ListPreference videoEffect = group.findPreference(KEY_VIDEO_EFFECT); + ListPreference cameraHdr = group.findPreference(KEY_CAMERA_HDR); // Since the screen could be loaded from different resources, we need // to check if the preference is available here @@ -208,6 +210,10 @@ public class CameraSettings { filterUnsupportedOptions(group, videoEffect, null); } } + if (cameraHdr != null && (!ApiHelper.HAS_CAMERA_HDR + || !Util.isCameraHdrSupported(mParameters))) { + removePreference(group, cameraHdr.getKey()); + } } private void buildExposureCompensation( diff --git a/src/com/android/camera/PhotoController.java b/src/com/android/camera/PhotoController.java index f6e5b103..1916796c 100644 --- a/src/com/android/camera/PhotoController.java +++ b/src/com/android/camera/PhotoController.java @@ -17,10 +17,12 @@ package com.android.camera; import android.content.Context; +import android.hardware.Camera.Parameters; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; +import com.android.camera.R; import com.android.camera.ui.OtherSettingsPopup; import com.android.camera.ui.PieItem; import com.android.camera.ui.PieRenderer; @@ -30,6 +32,7 @@ public class PhotoController extends PieController private static String TAG = "CAM_photocontrol"; private static float FLOAT_PI_DIVIDED_BY_TWO = (float) Math.PI / 2; + private final String mSettingOff; private PhotoModule mModule; private String[] mOtherKeys; @@ -38,6 +41,7 @@ public class PhotoController extends PieController public PhotoController(CameraActivity activity, PhotoModule module, PieRenderer pie) { super(activity, pie); mModule = module; + mSettingOff = activity.getString(R.string.setting_off_value); } public void initialize(PreferenceGroup group) { @@ -63,8 +67,9 @@ public class PhotoController extends PieController }); mRenderer.addItem(item); mOtherKeys = new String[] { - CameraSettings.KEY_WHITE_BALANCE, + CameraSettings.KEY_CAMERA_HDR, CameraSettings.KEY_SCENE_MODE, + CameraSettings.KEY_WHITE_BALANCE, CameraSettings.KEY_RECORD_LOCATION, CameraSettings.KEY_PICTURE_SIZE, CameraSettings.KEY_FOCUS_MODE}; @@ -120,4 +125,28 @@ public class PhotoController extends PieController mModule.onRestorePreferencesClicked(); } + // Return true if the preference has the specified key but not the value. + private static boolean notSame(ListPreference pref, String key, String value) { + return (key.equals(pref.getKey()) && !value.equals(pref.getValue())); + } + + private void setPreference(String key, String value) { + ListPreference pref = mPreferenceGroup.findPreference(key); + if (pref != null && !value.equals(pref.getValue())) { + pref.setValue(value); + reloadPreferences(); + } + } + + @Override + public void onSettingChanged(ListPreference pref) { + // Reset the scene mode if HDR is set to on. Reset HDR if scene mode is + // set to non-auto. + if (notSame(pref, CameraSettings.KEY_CAMERA_HDR, mSettingOff)) { + setPreference(CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO); + } else if (notSame(pref, CameraSettings.KEY_SCENE_MODE, Parameters.SCENE_MODE_AUTO)) { + setPreference(CameraSettings.KEY_CAMERA_HDR, mSettingOff); + } + super.onSettingChanged(pref); + } } diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index d1cd6154..26c30df2 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -2262,11 +2262,18 @@ public class PhotoModule } Log.v(TAG, "Preview size is " + optimalSize.width + "x" + optimalSize.height); - // Since change scene mode may change supported values, - // Set scene mode first, - mSceneMode = mPreferences.getString( + // Since changing scene mode may change supported values, set scene mode + // first. HDR is a scene mode. To promote it in UI, it is stored in a + // separate preference. + String hdr = mPreferences.getString(CameraSettings.KEY_CAMERA_HDR, + mActivity.getString(R.string.pref_camera_hdr_default)); + if (mActivity.getString(R.string.setting_on_value).equals(hdr)) { + mSceneMode = Util.SCENE_MODE_HDR; + } else { + mSceneMode = mPreferences.getString( CameraSettings.KEY_SCENE_MODE, mActivity.getString(R.string.pref_camera_scenemode_default)); + } if (Util.isSupported(mSceneMode, mParameters.getSupportedSceneModes())) { if (!mParameters.getSceneMode().equals(mSceneMode)) { mParameters.setSceneMode(mSceneMode); diff --git a/src/com/android/camera/PieController.java b/src/com/android/camera/PieController.java index 868f1844..5cb037b5 100644 --- a/src/com/android/camera/PieController.java +++ b/src/com/android/camera/PieController.java @@ -69,7 +69,7 @@ public class PieController { setPreferenceGroup(group); } - public void onSettingChanged() { + public void onSettingChanged(ListPreference pref) { if (mListener != null) { mListener.onSharedPreferenceChanged(); } @@ -139,7 +139,7 @@ public class PieController { public void onClick(View v) { pref.setValueIndex(index); reloadPreference(pref); - onSettingChanged(); + onSettingChanged(pref); } }); } diff --git a/src/com/android/camera/Util.java b/src/com/android/camera/Util.java index 200d9cb1..2953d6ae 100644 --- a/src/com/android/camera/Util.java +++ b/src/com/android/camera/Util.java @@ -83,6 +83,7 @@ public class Util { 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"; private static final String VIDEO_SNAPSHOT_SUPPORTED = "video-snapshot-supported"; + public static final String SCENE_MODE_HDR = "hdr"; public static final String TRUE = "true"; public static final String FALSE = "false"; @@ -102,6 +103,11 @@ public class Util { return TRUE.equals(params.get(VIDEO_SNAPSHOT_SUPPORTED)); } + public static boolean isCameraHdrSupported(Parameters params) { + List<String> supported = params.getSupportedSceneModes(); + return (supported != null) && supported.contains(SCENE_MODE_HDR); + } + @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) public static boolean isMeteringAreaSupported(Parameters params) { if (ApiHelper.HAS_CAMERA_METERING_AREA) { diff --git a/src/com/android/camera/ui/InLineSettingItem.java b/src/com/android/camera/ui/InLineSettingItem.java index 6ea9a11f..9effd2a7 100644 --- a/src/com/android/camera/ui/InLineSettingItem.java +++ b/src/com/android/camera/ui/InLineSettingItem.java @@ -43,7 +43,7 @@ public abstract class InLineSettingItem extends LinearLayout { protected String mOverrideValue; static public interface Listener { - public void onSettingChanged(); + public void onSettingChanged(ListPreference pref); } public InLineSettingItem(Context context, AttributeSet attrs) { @@ -68,7 +68,7 @@ public abstract class InLineSettingItem extends LinearLayout { mIndex = index; mPreference.setValueIndex(mIndex); if (mListener != null) { - mListener.onSettingChanged(); + mListener.onSettingChanged(mPreference); } updateView(); sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED); diff --git a/src/com/android/camera/ui/IndicatorButton.java b/src/com/android/camera/ui/IndicatorButton.java index 6b4f886d..82524689 100644 --- a/src/com/android/camera/ui/IndicatorButton.java +++ b/src/com/android/camera/ui/IndicatorButton.java @@ -23,6 +23,7 @@ import android.view.ViewGroup; import com.android.camera.CameraSettings; import com.android.camera.IconListPreference; +import com.android.camera.ListPreference; import com.android.camera.R; // An indicator button that represents one camera setting. Ex: flash. Pressing it opens a popup @@ -37,7 +38,7 @@ public class IndicatorButton extends AbstractIndicatorButton private Listener mListener; static public interface Listener { - public void onSettingChanged(); + public void onSettingChanged(ListPreference pref); } public void setSettingChangedListener(Listener listener) { @@ -134,7 +135,7 @@ public class IndicatorButton extends AbstractIndicatorButton // Dismiss later so the activated state can be updated before dismiss. dismissPopupDelayed(); if (mListener != null) { - mListener.onSettingChanged(); + mListener.onSettingChanged(mPreference); } } } diff --git a/src/com/android/camera/ui/IndicatorControl.java b/src/com/android/camera/ui/IndicatorControl.java index 1277de02..8d4d5599 100644 --- a/src/com/android/camera/ui/IndicatorControl.java +++ b/src/com/android/camera/ui/IndicatorControl.java @@ -172,7 +172,7 @@ public abstract class IndicatorControl extends RelativeLayout implements } @Override - public void onSettingChanged() { + public void onSettingChanged(ListPreference pref) { if (mListener != null) { mListener.onSharedPreferenceChanged(); } diff --git a/src/com/android/camera/ui/OtherSettingsPopup.java b/src/com/android/camera/ui/OtherSettingsPopup.java index aa1e869e..42581ef5 100644 --- a/src/com/android/camera/ui/OtherSettingsPopup.java +++ b/src/com/android/camera/ui/OtherSettingsPopup.java @@ -43,7 +43,7 @@ public class OtherSettingsPopup extends AbstractSettingPopup private ArrayList<ListPreference> mListItem = new ArrayList<ListPreference>(); static public interface Listener { - public void onSettingChanged(); + public void onSettingChanged(ListPreference pref); public void onRestorePreferencesClicked(); } @@ -124,9 +124,9 @@ public class OtherSettingsPopup extends AbstractSettingPopup } @Override - public void onSettingChanged() { + public void onSettingChanged(ListPreference pref) { if (mListener != null) { - mListener.onSettingChanged(); + mListener.onSettingChanged(pref); } } |