summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera')
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java16
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java41
-rwxr-xr-xsrc/com/android/camera/ui/ProMode.java76
3 files changed, 118 insertions, 15 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 057b17790..49d91394a 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -5531,7 +5531,7 @@ public class CaptureModule implements CameraModule, PhotoController,
updatePreview = true;
applyExposure(mPreviewRequestBuilder[cameraId]);
break;
- case SettingsManager.KEY_ISO:
+ case SettingsManager.KEY_MANUAL_ISO_VALUE:
updatePreview = true;
applyIso(mPreviewRequestBuilder[cameraId]);
break;
@@ -5636,9 +5636,11 @@ public class CaptureModule implements CameraModule, PhotoController,
}
private void applyIso(CaptureRequest.Builder request) {
- String value = mSettingsManager.getValue(SettingsManager.KEY_ISO);
if (applyManualIsoExposure(request)) return;
- if (value == null) return;
+ final SharedPreferences sharedPref = mActivity.getSharedPreferences(
+ ComboPreferences.getLocalSharedPreferencesName(mActivity, getMainCameraId()),
+ Context.MODE_PRIVATE);
+ String value = sharedPref.getString(SettingsManager.KEY_MANUAL_ISO_VALUE, "100");
String scene = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
boolean promode = false;
if (scene != null) {
@@ -5657,9 +5659,15 @@ public class CaptureModule implements CameraModule, PhotoController,
request.set(CaptureRequest.SENSOR_SENSITIVITY, mIsoSensitivity);
}
} else {
- long intValue = SettingsManager.KEY_ISO_INDEX.get(value);
+ int isoValue = Integer.parseInt(value);
VendorTagUtil.setIsoExpPrioritySelectPriority(request, 0);
+ long intValue = SettingsManager.KEY_ISO_INDEX.get(
+ SettingsManager.MAUNAL_ABSOLUTE_ISO_VALUE);
VendorTagUtil.setIsoExpPriority(request, intValue);
+ VendorTagUtil.setUseIsoValues(request, isoValue);
+ if (DEBUG) {
+ Log.v(TAG, "applyIso ISO value :" + isoValue);
+ }
if (request.get(CaptureRequest.SENSOR_EXPOSURE_TIME) != null) {
mIsoExposureTime = request.get(CaptureRequest.SENSOR_EXPOSURE_TIME);
}
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 5ccf8002b..d57b0da5a 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -429,7 +429,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
try {
newValue = dependencyList.getString(keyToProcess);
} catch (JSONException e) {
- e.printStackTrace();
+ Log.w(TAG, "initializeValueMap JSONException No value for:" + keyToProcess);
continue;
}
Values values = new Values(getValue(keyToProcess), newValue);
@@ -498,7 +498,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
try {
newValue = dependencyList.getString(keyToTurnOff);
} catch (JSONException e) {
- e.printStackTrace();
+ Log.w(TAG, "checkDependencyAndUpdate JSONException No value for:" + keyToTurnOff);
continue;
}
if (newValue == null) continue;
@@ -603,6 +603,23 @@ public class SettingsManager implements ListMenu.SettingsListener {
return sharedPreferences.getFloat(key, 0.5f);
}
+ private boolean setIsoPref(String key, int value) {
+ boolean result = false;
+ final SharedPreferences sharedPref = mContext.getSharedPreferences(
+ ComboPreferences.getLocalSharedPreferencesName(mContext, getCurrentCameraId()),
+ Context.MODE_PRIVATE);
+ int prefValue = Integer.parseInt(sharedPref.getString(key, "100"));
+ if (prefValue != value) {
+ ListPreference pref = mPreferenceGroup.findPreference(key);
+ SharedPreferences.Editor editor = sharedPref.edit();
+ editor.putString(key, String.valueOf(value));
+ editor.apply();
+ updateMapAndNotify(pref);
+ result = true;
+ }
+ return result;
+ }
+
public boolean isOverriden(String key) {
Values values = mValuesMap.get(key);
return values.overriddenValue != null;
@@ -645,6 +662,20 @@ public class SettingsManager implements ListMenu.SettingsListener {
}
}
+ public void setIsoValue(String key, boolean forceNotify, float value, int maxIso) {
+ boolean isSuccess = false;
+ if (value >= 0) {
+ isSuccess = setIsoPref(key, (int)(value * maxIso));
+ }
+ if (isSuccess || forceNotify) {
+ List<SettingState> list = new ArrayList<>();
+ Values values = new Values("" + value * maxIso, null);
+ SettingState ss = new SettingState(KEY_MANUAL_ISO_VALUE, values);
+ list.add(ss);
+ notifyListeners(list);
+ }
+ }
+
private void updateMapAndNotify(ListPreference pref) {
String key = pref.getKey();
List changed = checkDependencyAndUpdate(key);
@@ -1012,7 +1043,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
} catch(NullPointerException e) {
Log.w(TAG, "Supported iso range is null.");
} catch(IllegalArgumentException e) {
- Log.w(TAG, "Supported iso range is null.");
+ Log.w(TAG, "IllegalArgumentException Supported iso range is null.");
}
return result;
}
@@ -1847,7 +1878,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
try {
return mDependency.getJSONObject(key);
} catch (JSONException e) {
- e.printStackTrace();
+ Log.w(TAG, "getDependencyMapForKey JSONException No value for:" + key);
return null;
}
}
@@ -1861,7 +1892,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
try {
return dependencyMap.getJSONObject(value);
} catch (JSONException e) {
- e.printStackTrace();
+ Log.w(TAG, "getDependencyList JSONException No value for:" + key);
return null;
}
}
diff --git a/src/com/android/camera/ui/ProMode.java b/src/com/android/camera/ui/ProMode.java
index 99182e242..97c9cdb83 100755
--- a/src/com/android/camera/ui/ProMode.java
+++ b/src/com/android/camera/ui/ProMode.java
@@ -30,6 +30,7 @@
package com.android.camera.ui;
import android.content.Context;
+import android.content.SharedPreferences;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
@@ -45,12 +46,14 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.android.camera.SettingsManager;
+import com.android.camera.ComboPreferences;
import org.codeaurora.snapcam.R;
import java.util.ArrayList;
public class ProMode extends View {
+ private static final String TAG = "ProMode";
public static final int NO_MODE = -1;
public static final int EXPOSURE_MODE = 0;
public static final int MANUAL_MODE = 1;
@@ -70,6 +73,7 @@ public class ProMode extends View {
private int mCurveLeft;
private int mCurveRight;
private float mSlider = -1;
+ private float mIsoSlider = -1;
private Paint mPaint = new Paint();
private int mNums;
private int mIndex;
@@ -106,11 +110,19 @@ public class ProMode extends View {
}
private void init(int mode) {
- String key = getKey(mode);
- if (key == null) return;
- int index = mSettingsManager.getValueIndex(key);
- CharSequence[] cc = mSettingsManager.getEntries(key);
- mUI.updateProModeText(mode, cc[index].toString());
+ if (mode == ISO_MODE) {
+ final SharedPreferences sharedPref = mContext.getSharedPreferences(
+ ComboPreferences.getLocalSharedPreferencesName(mContext, mSettingsManager.getCurrentCameraId()),
+ Context.MODE_PRIVATE);
+ String value = sharedPref.getString(SettingsManager.KEY_MANUAL_ISO_VALUE, "100");
+ mUI.updateProModeText(mode, "Iso" + value);
+ } else {
+ String key = getKey(mode);
+ if (key == null) return;
+ int index = mSettingsManager.getValueIndex(key);
+ CharSequence[] cc = mSettingsManager.getEntries(key);
+ mUI.updateProModeText(mode, cc[index].toString());
+ }
}
@Override
@@ -133,6 +145,16 @@ public class ProMode extends View {
canvas.drawCircle(curveCoordinate[0], curveCoordinate[1], SELECTED_DOT_SIZE,
mPaint);
}
+ } else if (mMode == ISO_MODE) {
+ mPaint.setColor(Color.WHITE);
+ canvas.drawCircle(mCurveLeft, mCurveY, DOT_SIZE, mPaint);
+ canvas.drawCircle(mCurveRight, mCurveY, DOT_SIZE, mPaint);
+ mPaint.setColor(BLUE);
+ if (mIsoSlider >= 0) {
+ mCurveMeasure.getPosTan(mCurveMeasure.getLength() * mIsoSlider, curveCoordinate, null);
+ canvas.drawCircle(curveCoordinate[0], curveCoordinate[1], SELECTED_DOT_SIZE,
+ mPaint);
+ }
} else {
for (int i = 0; i < mNums; i++) {
if (i == mIndex) {
@@ -228,6 +250,30 @@ public class ProMode extends View {
mParent.addView(v);
mAddedViews.add(v);
}
+ } else if (mMode == ISO_MODE) {
+ int[] isoRange = mSettingsManager.getIsoRangeValues(mSettingsManager.getCurrentCameraId());
+ int value = Integer.parseInt(mSettingsManager.getValue(SettingsManager.KEY_MANUAL_ISO_VALUE));
+ if (isoRange == null) {
+ Log.v(TAG, "getIsoRangeValues is NULL");
+ return;
+ }
+ setIsoSlider((float)value/isoRange[1],true);
+ int stride = mCurveRight - mCurveLeft;
+ for (int i = 0; i < 2; i++) {
+ TextView v = new TextView(mContext);
+ String s = "" + isoRange[0];
+ if (i == 1) s = "" + isoRange[1];
+ v.setText(s);
+ v.setTextColor(Color.WHITE);
+ v.measure(0, 0);
+ ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(v.getMeasuredWidth(),
+ v.getMeasuredHeight());
+ v.setLayoutParams(lp);
+ v.setX(mCurveLeft + i * stride - v.getMeasuredWidth() / 2);
+ v.setY(mCurveY - 2 * v.getMeasuredHeight());
+ mParent.addView(v);
+ mAddedViews.add(v);
+ }
} else {
if (key == null) return;
CharSequence[] cc = mSettingsManager.getEntries(key);
@@ -273,7 +319,7 @@ public class ProMode extends View {
case WHITE_BALANCE_MODE:
return SettingsManager.KEY_WHITE_BALANCE;
case ISO_MODE:
- return SettingsManager.KEY_ISO;
+ return SettingsManager.KEY_MANUAL_ISO_VALUE;
}
return null;
}
@@ -305,6 +351,19 @@ public class ProMode extends View {
invalidate();
}
+ public void setIsoSlider(float slider, boolean forceNotify) {
+ mIsoSlider = slider;
+ int[] isoRange = mSettingsManager.getIsoRangeValues(mSettingsManager.getCurrentCameraId());
+ int maxIso = 1600;
+ if (isoRange != null) {
+ maxIso = isoRange[1];
+ }
+ mSettingsManager.setIsoValue(SettingsManager.KEY_MANUAL_ISO_VALUE, forceNotify,
+ mIsoSlider, maxIso);
+ mUI.updateProModeText(mMode, "Iso" + (int)(mIsoSlider * maxIso));
+ invalidate();
+ }
+
private void setIndex(int index, boolean force) {
if (mIndex == index && !force) return;
if (mIndex != -1) {
@@ -351,6 +410,11 @@ public class ProMode extends View {
if (slider >= 0) {
setSlider(slider,false);
}
+ } else if (mMode == ISO_MODE) {
+ float slider = getSlider(event.getX(), event.getY());
+ if (slider >= 0) {
+ setIsoSlider(slider,false);
+ }
} else {
int idx = findButton(event.getX(), event.getY());
if (idx != -1) {