summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/settings')
-rw-r--r--src/com/android/camera/settings/CameraSettingsActivity.java49
-rw-r--r--src/com/android/camera/settings/Keys.java9
-rw-r--r--src/com/android/camera/settings/SettingsUtil.java11
3 files changed, 69 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
diff --git a/src/com/android/camera/settings/Keys.java b/src/com/android/camera/settings/Keys.java
index f59591f84..8cc643b2f 100644
--- a/src/com/android/camera/settings/Keys.java
+++ b/src/com/android/camera/settings/Keys.java
@@ -18,6 +18,8 @@ package com.android.camera.settings;
import android.content.Context;
+import android.os.Environment;
+
import com.android.camera.app.LocationManager;
import com.android.camera.util.ApiHelper;
import com.android.camera2.R;
@@ -83,6 +85,7 @@ public class Keys {
public static final String KEY_HAS_SEEN_PERMISSIONS_DIALOGS = "pref_has_seen_permissions_dialogs";
public static final String KEY_POWER_SHUTTER = "pref_power_shutter";
public static final String KEY_MAX_BRIGHTNESS = "pref_max_brightness";
+ public static final String KEY_STORAGE = "pref_camera_storage_key";
/**
* Set some number of defaults for the defined keys.
@@ -182,6 +185,12 @@ public class Keys {
settingsManager.setDefaults(KEY_SHOULD_SHOW_SETTINGS_BUTTON_CLING, true);
+ settingsManager.setDefaults(KEY_STORAGE,
+ Environment.getExternalStorageDirectory().toString(), null);
+ if (!settingsManager.isSet(SettingsManager.SCOPE_GLOBAL, KEY_STORAGE)) {
+ settingsManager.setToDefault(SettingsManager.SCOPE_GLOBAL, KEY_STORAGE);
+ }
+
}
/** Helper functions for some defined keys. */
diff --git a/src/com/android/camera/settings/SettingsUtil.java b/src/com/android/camera/settings/SettingsUtil.java
index f83fb8bcd..64fd8435d 100644
--- a/src/com/android/camera/settings/SettingsUtil.java
+++ b/src/com/android/camera/settings/SettingsUtil.java
@@ -21,6 +21,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.media.CamcorderProfile;
+import android.os.storage.StorageVolume;
import android.util.SparseArray;
import com.android.camera.debug.Log;
@@ -491,6 +492,16 @@ public class SettingsUtil {
return -1;
}
+ private static List<StorageVolume> sMountedStorageVolumes;
+
+ public static void setMountedStorageVolumes(List<StorageVolume> volumes) {
+ sMountedStorageVolumes = volumes;
+ }
+
+ public static List<StorageVolume> getMountedStorageVolumes() {
+ return sMountedStorageVolumes;
+ }
+
public static interface CameraDeviceSelector {
/**
* Given the static characteristics of a specific camera device, decide whether it is the