From fbfbe4ff985c741bee2dd6f3392b6991cb2af97c 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 +++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) (limited to 'src/com/android/camera/CameraSettings.java') diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index 7b9f45c4a..35f48cebd 100644 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -270,6 +270,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 @@ -352,6 +356,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()) { + mKeyIso = "iso-values"; + } else { + Log.d(TAG, "Using key for iso-values: " + mKeyIsoValues); + } } public PreferenceGroup getPreferenceGroup(int preferenceRes) { @@ -362,6 +382,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 @@ -636,6 +678,22 @@ public class CameraSettings { } + 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); @@ -681,6 +739,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 (hdr_need_1x != null) { filterUnsupportedOptions(group, hdr_need_1x, getSupportedHDRNeed1x(mParameters)); @@ -744,7 +808,7 @@ public class CameraSettings { if (mIso != null) { filterUnsupportedOptions(group, - mIso, mParameters.getSupportedIsoValues()); + mIso, getSupportedIsoValues(mParameters)); } if (redeyeReduction != null) { -- cgit v1.2.3