summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/Storage.java
diff options
context:
space:
mode:
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;
}
/**