summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxianming wang <mingwax@codeaurora.org>2018-07-20 16:23:31 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-08-03 00:50:12 -0700
commit0ba33b9668e3fc5d92a12cc5fdcd7537de8580be (patch)
treec55d86c455b5bda5194a89676ca55b55ab66cc91
parentfd59af7220a45395048c4a86fa58c0bde365b878 (diff)
downloadandroid_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-xres/values/qcomarrays.xml2
-rwxr-xr-xres/values/qcomstrings.xml2
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java26
-rwxr-xr-xsrc/com/android/camera/SettingsActivity.java43
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java1
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";