summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/SettingsManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/SettingsManager.java')
-rw-r--r--src/com/android/camera/SettingsManager.java41
1 files changed, 40 insertions, 1 deletions
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 37976f190..b5ac8b3ee 100644
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -79,6 +79,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static final String KEY_FLASH_MODE = "pref_camera2_flashmode_key";
public static final String KEY_WHITE_BALANCE = "pref_camera2_whitebalance_key";
public static final String KEY_MAKEUP = "pref_camera2_makeup_key";
+ public static final String KEY_TRACKINGFOCUS = "pref_camera2_trackingfocus_key";
public static final String KEY_CAMERA2 = "pref_camera2_camera2_key";
public static final String KEY_MONO_ONLY = "pref_camera2_mono_only_key";
public static final String KEY_MONO_PREVIEW = "pref_camera2_mono_preview_key";
@@ -219,6 +220,17 @@ public class SettingsManager implements ListMenu.SettingsListener {
filterPreferences(cameraId);
initDepedencyTable();
initializeValueMap();
+ checkInitialDependency(cameraId);
+ }
+
+ private void checkInitialDependency(int cameraId) {
+ ListPreference videoQuality = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY);
+ if (videoQuality != null) {
+ String scene = getValue(SettingsManager.KEY_MAKEUP);
+ if(scene != null && scene.equalsIgnoreCase("on")) {
+ updateVideoQualityMenu(cameraId, 640, 480);
+ }
+ }
}
private void initDepedencyTable() {
@@ -447,6 +459,20 @@ public class SettingsManager implements ListMenu.SettingsListener {
else return CaptureModule.MONO_ID;
}
+ public void updateVideoQualityMenu(int cameraId, int maxWidth, int maxHeight) {
+ ListPreference videoQuality = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY);
+ if (videoQuality != null) {
+ List<String> sizes;
+ if(maxWidth < 0 && maxHeight < 0) {
+ sizes = getSupportedVideoSize(cameraId);
+ } else {
+ sizes = getSupportedVideoSize(cameraId, maxWidth, maxHeight);
+ }
+ CameraSettings.filterUnsupportedOptions(mPreferenceGroup,
+ videoQuality, sizes);
+ }
+ }
+
private void filterPreferences(int cameraId) {
// filter unsupported preferences
ListPreference whiteBalance = mPreferenceGroup.findPreference(KEY_WHITE_BALANCE);
@@ -502,7 +528,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
iso, getSupportedIso(cameraId));
}
- if (iso != null) {
+ if (videoQuality != null) {
CameraSettings.filterUnsupportedOptions(mPreferenceGroup,
videoQuality, getSupportedVideoSize(cameraId));
}
@@ -754,6 +780,19 @@ public class SettingsManager implements ListMenu.SettingsListener {
return res;
}
+ private List<String> getSupportedVideoSize(int cameraId, int maxWidth, int maxHeight) {
+ StreamConfigurationMap map = mCharacteristics.get(cameraId).get(
+ CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
+ Size[] sizes = map.getOutputSizes(MediaRecorder.class);
+ List<String> res = new ArrayList<>();
+ for (int i = 0; i < sizes.length; i++) {
+ if(sizes[i].getWidth() <= maxWidth && sizes[i].getHeight() <= maxHeight) {
+ res.add(sizes[i].toString());
+ }
+ }
+ return res;
+ }
+
private List<String> getSupportedRedeyeReduction(int cameraId) {
int[] flashModes = mCharacteristics.get(cameraId).get(CameraCharacteristics
.CONTROL_AE_AVAILABLE_MODES);