diff options
Diffstat (limited to 'src/com/android/camera/SettingsManager.java')
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 08488c9ee..10bd9b8d6 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -328,15 +328,10 @@ public class SettingsManager implements ListMenu.SettingsListener { } public void updateQcfaPictureSize() { - ListPreference picturePref = mPreferenceGroup.findPreference(KEY_PICTURE_SIZE); - if (picturePref != null) { - picturePref.setEntries(mContext.getResources().getStringArray( - R.array.pref_camera2_picturesize_entries)); - picturePref.setEntryValues(mContext.getResources().getStringArray( - R.array.pref_camera2_picturesize_entryvalues)); - filterUnsupportedOptions(picturePref, getSupportedPictureSize( - getCurrentCameraId())); - } + ListPreference pictureSize = mPreferenceGroup.findPreference(KEY_PICTURE_SIZE); + CameraSettings.formatPictureSizes(pictureSize, + getSupportedPictureSizeList(getCurrentCameraId()), mContext); + CameraSettings.resetIfInvalid(pictureSize); } public void init() { @@ -808,13 +803,9 @@ public class SettingsManager implements ListMenu.SettingsListener { if (cameraIdPref != null) buildCameraId(); if (pictureSize != null) { - if (filterUnsupportedOptions(pictureSize, getSupportedPictureSize(cameraId))) { - mFilteredKeys.add(pictureSize.getKey()); - } else { - if (filterSimilarPictureSize(mPreferenceGroup, pictureSize)) { - mFilteredKeys.add(pictureSize.getKey()); - } - } + CameraSettings.formatPictureSizes(pictureSize, + getSupportedPictureSizeList(cameraId), mContext); + CameraSettings.resetIfInvalid(pictureSize); } if (exposure != null) buildExposureCompensation(cameraId); @@ -1308,6 +1299,27 @@ public class SettingsManager implements ListMenu.SettingsListener { mValuesMap.get(KEY_FLASH_MODE) != null; } + private List<Size> getSupportedPictureSizeList(int cameraId) { + StreamConfigurationMap map = mCharacteristics.get(cameraId).get( + CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); + Size[] sizes = map.getOutputSizes(ImageFormat.JPEG); + List<Size> res = new ArrayList<>(); + if (sizes != null) { + for (int i = 0; i < sizes.length; i++) { + res.add(sizes[i]); + } + } + + Size[] highResSizes = map.getHighResolutionOutputSizes(ImageFormat.JPEG); + if (highResSizes != null) { + for (int i = 0; i < highResSizes.length; i++) { + res.add(highResSizes[i]); + } + } + + return res; + } + private List<String> getSupportedPictureSize(int cameraId) { StreamConfigurationMap map = mCharacteristics.get(cameraId).get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); |