diff options
author | kaiyiz <kaiyiz@codeaurora.org> | 2014-07-21 16:47:27 +0800 |
---|---|---|
committer | Leena Winterrowd <lenhardw@codeaurora.org> | 2014-08-21 16:43:23 -0700 |
commit | de52966826fef4f602215295d8ed8fe60184eef7 (patch) | |
tree | 1d4f9c3e3fe78f5974a53bb24192edd50dbf18bf /src/com/android/camera/Storage.java | |
parent | fb60d5db6b1bf9d4b995ef463c6c8d158f9d055a (diff) | |
download | android_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.java | 69 |
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; } /** |