diff options
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; } /** |