summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/Storage.java
diff options
context:
space:
mode:
authorkaiyiz <kaiyiz@codeaurora.org>2014-07-21 16:47:27 +0800
committerLeena Winterrowd <lenhardw@codeaurora.org>2014-08-21 16:43:23 -0700
commitde52966826fef4f602215295d8ed8fe60184eef7 (patch)
tree1d4f9c3e3fe78f5974a53bb24192edd50dbf18bf /src/com/android/camera/Storage.java
parentfb60d5db6b1bf9d4b995ef463c6c8d158f9d055a (diff)
downloadandroid_packages_apps_Snap-de52966826fef4f602215295d8ed8fe60184eef7.tar.gz
android_packages_apps_Snap-de52966826fef4f602215295d8ed8fe60184eef7.tar.bz2
android_packages_apps_Snap-de52966826fef4f602215295d8ed8fe60184eef7.zip
SnapdragonCamera: Switch to SD card when internal storage is full
When internal storage is full, switch to SD card for storage. Change the save path from internal storage to SD card when updateStorageSpace is called if: 1. Internal storage is the current save path and does not have enough space 2. SD card has enough space Display a toast message and update display of the save path menu item when the storage path is switched. CRs-Fixed: 687210 Change-Id: I6a9804e4f64e6d55c6aebd889ac2ce5e887cfa5a
Diffstat (limited to 'src/com/android/camera/Storage.java')
-rw-r--r--src/com/android/camera/Storage.java69
1 files changed, 44 insertions, 25 deletions
diff --git a/src/com/android/camera/Storage.java b/src/com/android/camera/Storage.java
index d27cf259f..53950f2f2 100644
--- a/src/com/android/camera/Storage.java
+++ b/src/com/android/camera/Storage.java
@@ -216,8 +216,8 @@ public class Storage {
}
}
- public static long getAvailableSpace() {
- if (isSaveSDCard() && SDCard.instance().isWriteable()) {
+ private static long getSDCardAvailableSpace() {
+ if (SDCard.instance().isWriteable()) {
File dir = new File(SDCard.instance().getDirectory());
dir.mkdirs();
try {
@@ -227,32 +227,51 @@ public class Storage {
} catch (Exception e) {
}
return UNKNOWN_SIZE;
- } else if (isSaveSDCard() && !SDCard.instance().isWriteable()) {
- return UNKNOWN_SIZE;
- } else {
- String state = Environment.getExternalStorageState();
- Log.d(TAG, "External storage state=" + state);
- if (Environment.MEDIA_CHECKING.equals(state)) {
- return PREPARING;
- }
- if (!Environment.MEDIA_MOUNTED.equals(state)) {
- return UNAVAILABLE;
- }
+ }
+ return UNKNOWN_SIZE;
+ }
- File dir = new File(DIRECTORY);
- dir.mkdirs();
- if (!dir.isDirectory() || !dir.canWrite()) {
- return UNAVAILABLE;
- }
+ private static long getInternalStorageAvailableSpace() {
+ String state = Environment.getExternalStorageState();
+ Log.d(TAG, "External storage state=" + state);
+ if (Environment.MEDIA_CHECKING.equals(state)) {
+ return PREPARING;
+ }
+ if (!Environment.MEDIA_MOUNTED.equals(state)) {
+ return UNAVAILABLE;
+ }
- try {
- StatFs stat = new StatFs(DIRECTORY);
- return stat.getAvailableBlocks() * (long) stat.getBlockSize();
- } catch (Exception e) {
- Log.i(TAG, "Fail to access external storage", e);
- }
- return UNKNOWN_SIZE;
+ File dir = new File(DIRECTORY);
+ dir.mkdirs();
+ if (!dir.isDirectory() || !dir.canWrite()) {
+ return UNAVAILABLE;
+ }
+
+ try {
+ StatFs stat = new StatFs(DIRECTORY);
+ return stat.getAvailableBlocks() * (long) stat.getBlockSize();
+ } catch (Exception e) {
+ Log.i(TAG, "Failed to access external storage", e);
+ }
+ return UNKNOWN_SIZE;
+ }
+
+ public static long getAvailableSpace() {
+ if (isSaveSDCard()) {
+ return getSDCardAvailableSpace();
+ } else {
+ return getInternalStorageAvailableSpace();
+ }
+ }
+
+ public static boolean switchSavePath() {
+ if (!isSaveSDCard()
+ && getInternalStorageAvailableSpace() <= LOW_STORAGE_THRESHOLD_BYTES
+ && getSDCardAvailableSpace() > LOW_STORAGE_THRESHOLD_BYTES) {
+ setSaveSDCard(true);
+ return true;
}
+ return false;
}
/**