diff options
author | xianming wang <mingwax@codeaurora.org> | 2018-07-20 16:23:31 +0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-08-03 00:50:12 -0700 |
commit | 0ba33b9668e3fc5d92a12cc5fdcd7537de8580be (patch) | |
tree | c55d86c455b5bda5194a89676ca55b55ab66cc91 | |
parent | fd59af7220a45395048c4a86fa58c0bde365b878 (diff) | |
download | android_packages_apps_Snap-0ba33b9668e3fc5d92a12cc5fdcd7537de8580be.tar.gz android_packages_apps_Snap-0ba33b9668e3fc5d92a12cc5fdcd7537de8580be.tar.bz2 android_packages_apps_Snap-0ba33b9668e3fc5d92a12cc5fdcd7537de8580be.zip |
SnapdragonCamera: Complete manual exposure gains function
Complete manual exposure gains function.
CRs-Fixed: 2288985
Change-Id: I57e19027b4dd05c862e25d1646f8cde3c4ac3a36
-rwxr-xr-x | res/values/qcomarrays.xml | 2 | ||||
-rwxr-xr-x | res/values/qcomstrings.xml | 2 | ||||
-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 |
5 files changed, 73 insertions, 1 deletions
diff --git a/res/values/qcomarrays.xml b/res/values/qcomarrays.xml index 13583406b..379794ef8 100755 --- a/res/values/qcomarrays.xml +++ b/res/values/qcomarrays.xml @@ -630,6 +630,7 @@ <item>@string/pref_camera_manual_exp_entry_ISO_priority</item> <item>@string/pref_camera_manual_exp_entry_exptime_priority</item> <item>@string/pref_camera_manual_exp_entry_user_setting</item> + <item>@string/pref_camera_manual_exp_entry_gains_priority</item> <item>@string/pref_camera_manual_exp_entry_off</item> </string-array> @@ -637,6 +638,7 @@ <item>@string/pref_camera_manual_exp_value_ISO_priority</item> <item>@string/pref_camera_manual_exp_value_exptime_priority</item> <item>@string/pref_camera_manual_exp_value_user_setting</item> + <item>@string/pref_camera_manual_exp_value_gains_priority</item> <item>@string/pref_camera_manual_exp_value_off</item> </string-array> diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml index ff8bc9728..8ce41625c 100755 --- a/res/values/qcomstrings.xml +++ b/res/values/qcomstrings.xml @@ -170,12 +170,14 @@ <string name="pref_camera_manual_exp_entry_ISO_priority">ISO priority</string> <string name="pref_camera_manual_exp_entry_exptime_priority">Exposure time priority</string> <string name="pref_camera_manual_exp_entry_user_setting">User setting</string> + <string name="pref_camera_manual_exp_entry_gains_priority">Gains priority</string> <string name="pref_camera_manual_exp_entry_off">Off</string> <string name="pref_camera_manual_exp_default">off</string> <string name="pref_camera_manual_exp_value_ISO_priority">iso-priority</string> <string name="pref_camera_manual_exp_value_exptime_priority">exp-time-priority</string> <string name="pref_camera_manual_exp_value_user_setting">user-setting</string> + <string name="pref_camera_manual_exp_value_gains_priority">gains-priority</string> <string name="pref_camera_manual_exp_value_off">off</string> <!-- Manual white balance entry values --> 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"; |