From 2a6ece71ba9ffd1cfb53b03fb788108606c8e30a Mon Sep 17 00:00:00 2001 From: Jay Wang Date: Wed, 15 Jun 2016 14:04:34 -0700 Subject: SnapdragonCamera: Multiple fixes in SettingManager - Setting manager instance was not destroyed when camera activity onDestroy is called and a new instance is created again when onCreate is called. Make change to destroy the setting manager during onDestroy. - Include high resolution picture sizes to the picture size list Change-Id: Id6cb52da1419f7e723304236b5d2c204d217398c CRs-Fixed: 1025845, 1025789 --- src/com/android/camera/SettingsManager.java | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src/com/android/camera/SettingsManager.java') diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 215ab8436..af26b27fe 100644 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -85,10 +85,9 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_LONGSHOT = "pref_camera2_longshot_key"; public static final String KEY_INITIAL_CAMERA = "pref_camera2_initial_camera_key"; private static final String TAG = "SnapCam_SettingsManager"; - private static final List mCharacteristics = new ArrayList<>(); private static SettingsManager sInstance; - + private ArrayList mCharacteristics; private ArrayList mListeners; private Map mValuesMap; private Context mContext; @@ -100,6 +99,7 @@ public class SettingsManager implements ListMenu.SettingsListener { private SettingsManager(Context context) { mListeners = new ArrayList<>(); + mCharacteristics = new ArrayList<>(); mContext = context; mPreferences = new ComboPreferences(mContext); CameraSettings.upgradeGlobalPreferences(mPreferences.getGlobal(), mContext); @@ -143,6 +143,12 @@ public class SettingsManager implements ListMenu.SettingsListener { return sInstance; } + public void destroyInstance() { + if (sInstance != null) { + sInstance = null; + } + } + public List getDisabledList() { List list = new ArrayList<>(); Set keySet = mValuesMap.keySet(); @@ -665,9 +671,19 @@ public class SettingsManager implements ListMenu.SettingsListener { CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); Size[] sizes = map.getOutputSizes(ImageFormat.JPEG); List res = new ArrayList<>(); - for (int i = 0; i < sizes.length; i++) { - res.add(sizes[i].toString()); + if (sizes != null) { + for (int i = 0; i < sizes.length; i++) { + res.add(sizes[i].toString()); + } } + + Size[] highResSizes = map.getHighResolutionOutputSizes(ImageFormat.JPEG); + if (highResSizes != null) { + for (int i = 0; i < highResSizes.length; i++) { + res.add(highResSizes[i].toString()); + } + } + return res; } -- cgit v1.2.3