From 0ee94d2b3b549aae526d5c7f4847525d2bd9faa7 Mon Sep 17 00:00:00 2001 From: codeworkx Date: Tue, 5 Jan 2016 21:39:36 +0100 Subject: add support for non-standard iso keys and values Change-Id: I3a948495cdf84dae3c1734d50ff91b4a5d3d9fc0 --- src/com/android/camera/CameraSettings.java | 66 +++++++++++++++++++++++++++++- src/com/android/camera/PhotoModule.java | 14 +++---- 2 files changed, 72 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index a278d788b..ad3802861 100644 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -286,6 +286,10 @@ public class CameraSettings { private final Parameters mParameters; private final CameraInfo[] mCameraInfo; private final int mCameraId; + + public static String mKeyIso = null; + public static String mKeyIsoValues = null; + private static final HashMap VIDEO_ENCODER_TABLE = new HashMap(); public static final HashMap @@ -398,6 +402,22 @@ public class CameraSettings { mParameters = parameters; mCameraId = cameraId; mCameraInfo = cameraInfo; + + // ISO + mKeyIso = mContext.getResources().getString(R.string.key_iso); + mKeyIsoValues = mContext.getResources().getString(R.string.key_iso_values); + + if (mKeyIso == null || mKeyIso.isEmpty()) { + mKeyIso = "iso"; + } else { + Log.d(TAG, "Using key for iso: " + mKeyIso); + } + + if (mKeyIsoValues == null || mKeyIsoValues.isEmpty()) { + mKeyIsoValues = "iso-values"; + } else { + Log.d(TAG, "Using key for iso-values: " + mKeyIsoValues); + } } public PreferenceGroup getPreferenceGroup(int preferenceRes) { @@ -408,6 +428,28 @@ public class CameraSettings { return group; } + public static List getSupportedIsoValues(Parameters params) { + String isoValues = params.get(mKeyIsoValues); + if (isoValues == null) { + return null; + } + Log.d(TAG, "Supported iso values: " + isoValues); + return split(isoValues); + } + + public static String getISOValue(Parameters params) { + String iso = params.get(mKeyIso); + + if (iso == null) { + return null; + } + return iso; + } + + public static void setISOValue(Parameters params, String iso) { + params.set(mKeyIso, iso); + } + public static String getSupportedHighestVideoQuality( int cameraId, Parameters parameters) { // When launching the camera app first time, we will set the video quality @@ -694,6 +736,22 @@ public class CameraSettings { return supported; } + private static ListPreference removeLeadingISO(ListPreference pref) { + CharSequence entryValues[] = pref.getEntryValues(); + if (entryValues.length > 0) { + CharSequence modEntryValues[] = new CharSequence[entryValues.length]; + for (int i = 0, len = entryValues.length; i < len; i++) { + String isoValue = entryValues[i].toString(); + if (isoValue.startsWith("ISO") && !isoValue.startsWith("ISO_")) { + isoValue = isoValue.replaceAll("ISO", ""); + } + modEntryValues[i] = isoValue; + } + pref.setEntryValues(modEntryValues); + } + return pref; + } + private void qcomInitPreferences(PreferenceGroup group){ //Qcom Preference add here ListPreference powerMode = group.findPreference(KEY_POWER_MODE); @@ -744,6 +802,12 @@ public class CameraSettings { } } + // Remove leading ISO from iso-values + boolean isoValuesUseNumbers = mContext.getResources().getBoolean(R.bool.iso_values_use_numbers); + if (isoValuesUseNumbers && mIso != null) { + mIso = removeLeadingISO(mIso); + } + if (bokehMode != null) { if (!isBokehModeSupported(mParameters)) { removePreference(group, bokehMode.getKey()); @@ -820,7 +884,7 @@ public class CameraSettings { if (mIso != null) { filterUnsupportedOptions(group, - mIso, ParametersWrapper.getSupportedIsoValues(mParameters)); + mIso, getSupportedIsoValues(mParameters)); } if (redeyeReduction != null) { diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index fead92a57..30602269f 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1966,7 +1966,7 @@ public class PhotoModule mUI.overrideSettings(CameraSettings.KEY_LONGSHOT, null); } - String isoMode = ParametersWrapper.getISOValue(mParameters); + String isoMode = CameraSettings.getISOValue(mParameters); final String isoManual = CameraSettings.KEY_MANUAL_ISO; if (isoMode.equals(isoManual)) { final String isoPref = mPreferences.getString( @@ -3425,8 +3425,8 @@ public class PhotoModule CameraSettings.KEY_ISO, mActivity.getString(R.string.pref_camera_iso_default)); if (CameraUtil.isSupported(iso, - ParametersWrapper.getSupportedIsoValues(mParameters))) { - ParametersWrapper.setISOValue(mParameters, iso); + CameraSettings.getSupportedIsoValues(mParameters))) { + CameraSettings.setISOValue(mParameters, iso); } } // Set color effect parameter. @@ -4735,7 +4735,7 @@ public class PhotoModule mParameters = mCameraDevice.getParameters(); final int minISO = mParameters.getInt(CameraSettings.KEY_MIN_ISO); final int maxISO = mParameters.getInt(CameraSettings.KEY_MAX_ISO); - String isoMode = ParametersWrapper.getISOValue(mParameters); + String isoMode = CameraSettings.getISOValue(mParameters); final String isoManual = CameraSettings.KEY_MANUAL_ISO; String currentISO = mParameters.get(CameraSettings.KEY_CURRENT_ISO); if (currentISO != null) { @@ -4777,7 +4777,7 @@ public class PhotoModule if (newISO <= maxISO && newISO >= minISO) { Log.v(TAG, "Setting ISO : " + newISO); mManual3AEnabled |= MANUAL_EXPOSURE; - ParametersWrapper.setISOValue(mParameters, isoManual); + CameraSettings.setISOValue(mParameters, isoManual); mParameters.set(CameraSettings.KEY_CONTINUOUS_ISO, newISO); mParameters.set(CameraSettings.KEY_EXPOSURE_TIME, "0"); updateCommonManual3ASettings(); @@ -4813,7 +4813,7 @@ public class PhotoModule Log.v(TAG, "Setting Exposure time : " + newExpTime); mManual3AEnabled |= MANUAL_EXPOSURE; mParameters.set(CameraSettings.KEY_EXPOSURE_TIME, expTime); - ParametersWrapper.setISOValue(mParameters, ParametersWrapper.ISO_AUTO); + CameraSettings.setISOValue(mParameters, Parameters.ISO_AUTO); mUI.setPreference(CameraSettings.KEY_ISO, ParametersWrapper.ISO_AUTO); mUI.overrideSettings(CameraSettings.KEY_ISO, null); updateCommonManual3ASettings(); @@ -4865,7 +4865,7 @@ public class PhotoModule newExpTime >= Double.parseDouble(minExpTime)) { mManual3AEnabled |= MANUAL_EXPOSURE; Log.v(TAG, "Setting ISO : " + newISO); - ParametersWrapper.setISOValue(mParameters, isoManual); + CameraSettings.setISOValue(mParameters, isoManual); mParameters.set(CameraSettings.KEY_CONTINUOUS_ISO, newISO); Log.v(TAG, "Setting Exposure time : " + newExpTime); mParameters.set(CameraSettings.KEY_EXPOSURE_TIME, expTime); -- cgit v1.2.3