diff options
author | dcalandria <dcalandria@gmail.com> | 2015-04-25 18:09:25 +0200 |
---|---|---|
committer | Michael Bestas <mikeioannina@gmail.com> | 2016-12-30 17:22:17 +0200 |
commit | 521f4565e0108d92abd48ed90ef923199651de73 (patch) | |
tree | 3ebd45be793f5bbe7b64da450ac0f844861fe8bf /src/com/android/camera/settings/CameraSettingsActivity.java | |
parent | f1154fa97084d8601fe4f1ca61cc350b6a29693d (diff) | |
download | android_packages_apps_Camera2-521f4565e0108d92abd48ed90ef923199651de73.tar.gz android_packages_apps_Camera2-521f4565e0108d92abd48ed90ef923199651de73.tar.bz2 android_packages_apps_Camera2-521f4565e0108d92abd48ed90ef923199651de73.zip |
Add Storage preference (1/2)
This patch allows the user to change the default storage path.
As in CM11, when the path is changed it sends an intent
to the Gallery to set the default camera folder.
Change-Id: I319decc3fdceca61050cf64f7e59afb06fedbf80
Fix writing to external storage.
Change-Id: Ie0917b6c17129cd9ad2c69a2a53a4c3c3ee565b6
CameraSettingsActivity: Handle NPE when storage preference is already removed
Fixes: http://pastebin.com/zv1sPid2
Change-Id: I05951f93b37759f4d8c9f2fde10c84eb388c4830
Diffstat (limited to 'src/com/android/camera/settings/CameraSettingsActivity.java')
-rw-r--r-- | src/com/android/camera/settings/CameraSettingsActivity.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/com/android/camera/settings/CameraSettingsActivity.java b/src/com/android/camera/settings/CameraSettingsActivity.java index f890bf11f..4e05add96 100644 --- a/src/com/android/camera/settings/CameraSettingsActivity.java +++ b/src/com/android/camera/settings/CameraSettingsActivity.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; +import android.os.storage.StorageVolume; import android.preference.ListPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; @@ -150,6 +151,8 @@ public class CameraSettingsActivity extends FragmentActivity { // Selected resolutions for the different cameras and sizes. private PictureSizes mPictureSizes; + private List<StorageVolume> mStorageVolumes; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -189,6 +192,9 @@ public class CameraSettingsActivity extends FragmentActivity { // Load the camera sizes. loadSizes(); + // Load storage volumes + loadStorageVolumeList(); + // Send loaded sizes to additional preferences. CameraSettingsActivityHelper.onSizesLoaded(this, mPictureSizes.backCameraSizes, new ListPreferenceFiller() { @@ -215,6 +221,17 @@ public class CameraSettingsActivity extends FragmentActivity { setPreferenceScreenIntent(advancedScreen); } + // Fill Storage preference + final Preference storagePreference = findPreference(Keys.KEY_STORAGE); + if (storagePreference != null) { + if (mStorageVolumes == null) { + getPreferenceScreen().removePreference(storagePreference); + } else { + setEntries(storagePreference); + setSummary(storagePreference); + } + } + getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); } @@ -365,6 +382,8 @@ public class CameraSettingsActivity extends FragmentActivity { setEntriesForSelection(mPictureSizes.videoQualitiesBack.orNull(), listPreference); } else if (listPreference.getKey().equals(Keys.KEY_VIDEO_QUALITY_FRONT)) { setEntriesForSelection(mPictureSizes.videoQualitiesFront.orNull(), listPreference); + } else if (listPreference.getKey().equals(Keys.KEY_STORAGE)) { + setStorageEntriesForSelection(mStorageVolumes, listPreference); } } @@ -444,6 +463,28 @@ public class CameraSettingsActivity extends FragmentActivity { } /** + * Sets the entries for the storage list preference. + * + * @param storageVolumes The storage volumes. + * @param preference The preference to set the entries for. + */ + private void setStorageEntriesForSelection(List<StorageVolume> storageVolumes, + ListPreference preference) { + if (storageVolumes == null) { + return; + } + String[] entries = new String[storageVolumes.size()]; + String[] entryValues = new String[storageVolumes.size()]; + for (int i = 0; i < storageVolumes.size(); i++) { + StorageVolume v = storageVolumes.get(i); + entries[i] = v.getDescription(getActivity()); + entryValues[i] = v.getPath(); + } + preference.setEntries(entries); + preference.setEntryValues(entryValues); + } + + /** * Sets the summary for the given list preference. * * @param displayableSizes The human readable preferred sizes @@ -491,6 +532,14 @@ public class CameraSettingsActivity extends FragmentActivity { mPictureSizes = loader.computePictureSizes(); } + private void loadStorageVolumeList() { + mStorageVolumes = SettingsUtil.getMountedStorageVolumes(); + if (mStorageVolumes.size() < 2) { + // Remove storage preference + mStorageVolumes = null; + } + } + /** * @param size The photo resolution. * @return A human readable and translated string for labeling the |