diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2017-01-05 13:57:24 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-01-05 13:57:24 -0800 |
commit | 1ec923e6fd96d396767f8b7e818b5854ae8bf821 (patch) | |
tree | b0b622a7c8af3360c96bd707e24ed54c07d8df0e | |
parent | 2f89961fd763d226b2f4a595bfb77e1a491c01e5 (diff) | |
parent | d92a952b0cfe8e570f85112bc9a4c65729e7ffed (diff) | |
download | android_packages_apps_Snap-1ec923e6fd96d396767f8b7e818b5854ae8bf821.tar.gz android_packages_apps_Snap-1ec923e6fd96d396767f8b7e818b5854ae8bf821.tar.bz2 android_packages_apps_Snap-1ec923e6fd96d396767f8b7e818b5854ae8bf821.zip |
Merge "SnapdragonCamera:Add instant AEC to developer option" into camera.lnx.1.0-dev.1.0
-rwxr-xr-x[-rw-r--r--] | res/values/camera2arrays.xml | 12 | ||||
-rwxr-xr-x[-rw-r--r--] | res/values/qcomstrings.xml | 6 | ||||
-rwxr-xr-x[-rw-r--r--] | res/xml/capture_preferences.xml | 7 | ||||
-rwxr-xr-x[-rw-r--r--] | res/xml/setting_menu_preferences.xml | 15 | ||||
-rw-r--r-- | src/com/android/camera/CaptureModule.java | 13 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/camera/SettingsActivity.java | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | src/com/android/camera/SettingsManager.java | 22 |
7 files changed, 82 insertions, 1 deletions
diff --git a/res/values/camera2arrays.xml b/res/values/camera2arrays.xml index fbb70b984..ca6234944 100644..100755 --- a/res/values/camera2arrays.xml +++ b/res/values/camera2arrays.xml @@ -946,4 +946,16 @@ for time lapse recording --> <item>@string/pref_camera2_shutter_sound_value_on</item> <item>@string/pref_camera2_shutter_sound_value_off</item> </string-array> + + <string-array name="pref_camera2_instant_aec_entryvalues" translatable="false"> + <item>0</item> + <item>1</item> + <item>2</item> + </string-array> + + <string-array name="pref_camera2_instant_aec_entries" translatable="true"> + <item>@string/pref_camera2_instant_aec_entry_disable</item> + <item>@string/pref_camera2_instant_aec_entry_aggressive</item> + <item>@string/pref_camera2_instant_aec_entry_fast</item> + </string-array> </resources> diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml index 509fae318..526e72021 100644..100755 --- a/res/values/qcomstrings.xml +++ b/res/values/qcomstrings.xml @@ -1080,5 +1080,11 @@ <string name="pref_camera2_not_show_again">Do not show again</string> <string name="pref_camera2_scene_mode_instructional_ok" translatable="true">OK</string> + + <string name="pref_camera2_instant_aec_title" translatable="true">Instant AEC</string> + <string name="pref_camera2_instant_aec_default" translatable="false">0</string> + <string name="pref_camera2_instant_aec_entry_disable" translatable="true">Disable</string> + <string name="pref_camera2_instant_aec_entry_aggressive" translatable="true">Aggressive AEC</string> + <string name="pref_camera2_instant_aec_entry_fast" translatable="true">Fast AEC</string> </resources> diff --git a/res/xml/capture_preferences.xml b/res/xml/capture_preferences.xml index 8ad300fe7..cab23a027 100644..100755 --- a/res/xml/capture_preferences.xml +++ b/res/xml/capture_preferences.xml @@ -300,4 +300,11 @@ camera:entryValues="@array/pref_camera2_shutter_sound_entryvalues" camera:key="pref_camera2_shutter_sound_key" camera:title="@string/pref_camera2_shutter_sound_title" /> + + <ListPreference + camera:defaultValue="@string/pref_camera2_instant_aec_default" + camera:entries="@array/pref_camera2_instant_aec_entries" + camera:entryValues="@array/pref_camera2_instant_aec_entryvalues" + camera:key="pref_camera2_instant_aec_key" + camera:title="@string/pref_camera2_instant_aec_title" /> </PreferenceGroup> diff --git a/res/xml/setting_menu_preferences.xml b/res/xml/setting_menu_preferences.xml index 80097f497..7c03e589d 100644..100755 --- a/res/xml/setting_menu_preferences.xml +++ b/res/xml/setting_menu_preferences.xml @@ -275,4 +275,19 @@ android:summary="Version" android:title="Version Info" /> </PreferenceCategory> + + <PreferenceCategory + android:key="developer" + android:layout="@layout/preferences_category" + android:title="DEVELOPER OPTIONS"> + + <ListPreference + android:defaultValue="@string/pref_camera2_instant_aec_default" + android:entries="@array/pref_camera2_instant_aec_entries" + android:entryValues="@array/pref_camera2_instant_aec_entryvalues" + android:key="pref_camera2_instant_aec_key" + android:layout="@layout/preference" + android:summary="%s" + android:title="@string/pref_camera2_instant_aec_title" /> + </PreferenceCategory> </PreferenceScreen> diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index e870161f3..a5805de69 100644 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -204,6 +204,10 @@ public class CaptureModule implements CameraModule, PhotoController, public static CaptureRequest.Key<Long> ISO_EXP = new CaptureRequest.Key<>("org.codeaurora.qcamera3.iso_exp_priority.use_iso_exp_priority", Long.class); + public static CameraCharacteristics.Key<int[]> InstantAecAvailableModes = + new CameraCharacteristics.Key<>("org.codeaurora.qcamera3.instant_aec.instant_aec_available_modes", int[].class); + public static final CaptureRequest.Key<Integer> INSTANT_AEC_MODE = + new CaptureRequest.Key<>("org.codeaurora.qcamera3.instant_aec.instant_aec_mode", Integer.class); private boolean[] mTakingPicture = new boolean[MAX_NUM_CAM]; private int mControlAFMode = CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_PICTURE; private int mLastResultAFState = -1; @@ -1836,6 +1840,7 @@ public class CaptureModule implements CameraModule, PhotoController, applyColorEffect(builder); applySceneMode(builder); applyZoom(builder, id); + applyInstantAEC(builder); } /** @@ -3450,6 +3455,14 @@ public class CaptureModule implements CameraModule, PhotoController, request.set(CaptureRequest.SCALER_CROP_REGION, cropRegionForZoom(id)); } + private void applyInstantAEC(CaptureRequest.Builder request) { + String value = mSettingsManager.getValue(SettingsManager.KEY_INSTANT_AEC); + if (value == null || value.equals("0")) + return; + int intValue = Integer.parseInt(value); + request.set(CaptureModule.INSTANT_AEC_MODE, intValue); + } + private boolean applyPreferenceToPreview(int cameraId, String key, String value) { if (!checkSessionAndBuilder(mCaptureSession[cameraId], mPreviewRequestBuilder[cameraId])) { return false; diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index e97073f58..61c8c46f1 100644..100755 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -40,6 +40,7 @@ import android.preference.PreferenceCategory; import android.preference.PreferenceGroup; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; +import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.view.Window; import android.view.WindowManager; @@ -142,6 +143,7 @@ public class SettingsActivity extends PreferenceActivity { mDeveloperMenuEnabled = true; mSharedPreferences.edit().putBoolean(SettingsManager.KEY_DEVELOPER_MENU, true).apply(); Toast.makeText(SettingsActivity.this, "Camera developer option is enabled now", Toast.LENGTH_SHORT).show(); + recreate(); } } else { privateCounter = 0; @@ -161,12 +163,16 @@ public class SettingsActivity extends PreferenceActivity { } private void filterPreferences() { - String[] categories = {"photo", "video", "general"}; + String[] categories = {"photo", "video", "general", "developer"}; Set<String> set = mSettingsManager.getFilteredKeys(); if (!mDeveloperMenuEnabled) { set.add(SettingsManager.KEY_MONO_PREVIEW); set.add(SettingsManager.KEY_MONO_ONLY); set.add(SettingsManager.KEY_CLEARSIGHT); + + PreferenceScreen parent = getPreferenceScreen(); + PreferenceGroup developer = (PreferenceGroup)findPreference("developer"); + parent.removePreference(developer); } for (String key : set) { diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 6adbcfb64..6d33ad75f 100644..100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -138,6 +138,7 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_DEVELOPER_MENU = "pref_camera2_developer_menu_key"; public static final String KEY_RESTORE_DEFAULT = "pref_camera2_restore_default_key"; public static final String KEY_FOCUS_DISTANCE = "pref_camera2_focus_distance_key"; + public static final String KEY_INSTANT_AEC = "pref_camera2_instant_aec_key"; private static final String TAG = "SnapCam_SettingsManager"; private static SettingsManager sInstance; @@ -582,6 +583,7 @@ public class SettingsManager implements ListMenu.SettingsListener { ListPreference audioEncoder = mPreferenceGroup.findPreference(KEY_AUDIO_ENCODER); ListPreference noiseReduction = mPreferenceGroup.findPreference(KEY_NOISE_REDUCTION); ListPreference faceDetection = mPreferenceGroup.findPreference(KEY_FACE_DETECTION); + ListPreference instantAec = mPreferenceGroup.findPreference(KEY_INSTANT_AEC); if (whiteBalance != null) { if (filterUnsupportedOptions(whiteBalance, getSupportedWhiteBalanceModes(cameraId))) { @@ -602,6 +604,13 @@ public class SettingsManager implements ListMenu.SettingsListener { } } + if (instantAec != null) { + if (filterUnsupportedOptions(instantAec, + getSupportedInstantAecAvailableModes(cameraId))) { + mFilteredKeys.add(instantAec.getKey()); + } + } + if (sceneMode != null) { if (filterUnsupportedOptions(sceneMode, getSupportedSceneModes(cameraId))) { mFilteredKeys.add(sceneMode.getKey()); @@ -1211,6 +1220,19 @@ public class SettingsManager implements ListMenu.SettingsListener { return false; } + public List<String> getSupportedInstantAecAvailableModes(int cameraId) { + int[] instantAecAvailableModes = mCharacteristics.get(cameraId).get( + CaptureModule.InstantAecAvailableModes); + if (instantAecAvailableModes == null) { + return null; + } + List<String> modes = new ArrayList<>(); + for (int i : instantAecAvailableModes) { + modes.add(""+i); + } + return modes; + } + private boolean filterUnsupportedOptions(ListPreference pref, List<String> supported) { // Remove the preference if the parameter is not supported if (supported == null) { |