diff options
Diffstat (limited to 'src/com')
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 26 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsActivity.java | 43 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 1 |
3 files changed, 69 insertions, 1 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 1c247dfab..40c3d88b6 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -5575,6 +5575,8 @@ public class CaptureModule implements CameraModule, PhotoController, R.string.pref_camera_manual_exp_value_exptime_priority); String userSetting = mActivity.getString( R.string.pref_camera_manual_exp_value_user_setting); + String gainsPriority = mActivity.getString( + R.string.pref_camera_manual_exp_value_gains_priority); String manualExposureMode = mSettingsManager.getValue(SettingsManager.KEY_MANUAL_EXPOSURE); if (manualExposureMode == null) return result; if (manualExposureMode.equals(isoPriority)) { @@ -5634,6 +5636,30 @@ public class CaptureModule implements CameraModule, PhotoController, request.set(CaptureRequest.SENSOR_EXPOSURE_TIME, newExpTime); request.set(CaptureRequest.SENSOR_SENSITIVITY, isoValue); result = true; + } else if (manualExposureMode.equals(gainsPriority)) { + float gains = pref.getFloat(SettingsManager.KEY_MANUAL_GAINS_VALUE, 1.0f); + int[] isoRange = mSettingsManager.getIsoRangeValues(getMainCameraId()); + VendorTagUtil.setIsoExpPrioritySelectPriority(request, 0); + int isoValue = 100; + if (isoRange!= null) { + isoValue = (int) (gains * isoRange[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, "manual Gain value :" + isoValue); + } + if (request.get(CaptureRequest.SENSOR_EXPOSURE_TIME) != null) { + mIsoExposureTime = request.get(CaptureRequest.SENSOR_EXPOSURE_TIME); + } + if (request.get(CaptureRequest.SENSOR_SENSITIVITY) != null) { + mIsoSensitivity = request.get(CaptureRequest.SENSOR_SENSITIVITY); + } + request.set(CaptureRequest.SENSOR_EXPOSURE_TIME, null); + request.set(CaptureRequest.SENSOR_SENSITIVITY, null); + result = true; } return result; } diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index a96d47c6d..8a7d1f9cd 100755 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -168,6 +168,8 @@ public class SettingsActivity extends PreferenceActivity { R.string.pref_camera_manual_exp_value_exptime_priority); String userSetting = this.getString( R.string.pref_camera_manual_exp_value_user_setting); + String gainsPriority = this.getString( + R.string.pref_camera_manual_exp_value_gains_priority); String manualExposureMode = mSettingsManager.getValue(SettingsManager.KEY_MANUAL_EXPOSURE); String currentISO = pref.getString(SettingsManager.KEY_MANUAL_ISO_VALUE, "-1"); long[] exposureRange = mSettingsManager.getExposureRangeValues(cameraId); @@ -282,9 +284,48 @@ public class SettingsActivity extends PreferenceActivity { } }); alert.show(); - } else { + } else if (manualExposureMode.equals(gainsPriority)){ + handleManualGainsPriority(linear, ISOtext, ExpTimeInput, pref); + } + } + private void handleManualGainsPriority(final LinearLayout linear, final TextView gainsText, + final EditText gainsInput, final SharedPreferences pref) { + SharedPreferences.Editor editor = pref.edit(); + final AlertDialog.Builder alert = new AlertDialog.Builder(SettingsActivity.this); + int cameraId = mSettingsManager.getCurrentCameraId(); + int[] isoRange = mSettingsManager.getIsoRangeValues(cameraId); + float[] gainsRange = new float[2]; + gainsRange[0] = 1.0f; + gainsRange[1] = (float) isoRange[1]/isoRange[0]; + float currentGains = pref.getFloat(SettingsManager.KEY_MANUAL_GAINS_VALUE, -1.0f); + if (currentGains != -1.0f) { + gainsText.setText(" Current Gains is " + currentGains); + } else { + gainsText.setText(" Please enter gains value "); } + alert.setMessage("Enter gains in the range of " + gainsRange[0] + " to " + gainsRange[1]); + linear.addView(gainsInput); + linear.addView(gainsText); + alert.setView(linear); + alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + float newGain = -1; + String gain = gainsInput.getText().toString(); + Log.v(TAG, "string gain length " + gain.length() + ", gain :" + gain); + if (gain.length() > 0) { + newGain = Float.parseFloat(gain); + } + if (newGain <= gainsRange[1] && newGain >= gainsRange[0]) { + editor.putFloat(SettingsManager.KEY_MANUAL_GAINS_VALUE, newGain); + editor.apply(); + } else { + RotateTextToast.makeText(SettingsActivity.this, "Invalid GAINS", + Toast.LENGTH_SHORT).show(); + } + } + }); + alert.show(); } @Override diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 87bd3ae78..e184f1d30 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -159,6 +159,7 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_EXPOSURE_METERING_MODE = "pref_camera2_exposure_metering_key"; public static final String KEY_MANUAL_EXPOSURE = "pref_camera2_manual_exp_key"; public static final String KEY_MANUAL_ISO_VALUE = "pref_camera2_manual_iso_key"; + public static final String KEY_MANUAL_GAINS_VALUE = "pref_camera2_manual_gains_key"; public static final String KEY_MANUAL_EXPOSURE_VALUE = "pref_camera2_manual_exposure_key"; public static final String KEY_QCFA = "pref_camera2_qcfa_key"; public static final String KEY_EIS_VALUE = "pref_camera2_eis_key"; |