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.java70
1 files changed, 49 insertions, 21 deletions
diff --git a/src/com/android/camera/Storage.java b/src/com/android/camera/Storage.java
index 29dad8aa4..4c966d47b 100644
--- a/src/com/android/camera/Storage.java
+++ b/src/com/android/camera/Storage.java
@@ -55,6 +55,16 @@ public class Storage {
public static final long UNKNOWN_SIZE = -3L;
public static final long LOW_STORAGE_THRESHOLD_BYTES = 50000000;
+ private static boolean sSaveSDCard = false;
+
+ public static boolean isSaveSDCard() {
+ return sSaveSDCard;
+ }
+
+ public static void setSaveSDCard(boolean saveSDCard) {
+ sSaveSDCard = saveSDCard;
+ }
+
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private static void setImageSize(ContentValues values, int width, int height) {
// The two fields are available since ICS but got published in JB
@@ -193,36 +203,54 @@ public class Storage {
}
public static String generateFilepath(String title, String pictureFormat) {
- if (pictureFormat.equalsIgnoreCase("jpeg") || pictureFormat == null) {
- return DIRECTORY + '/' + title + ".jpg";
+ if (pictureFormat == null || pictureFormat.equalsIgnoreCase("jpeg")) {
+ if (isSaveSDCard() && SDCard.instance().isWriteable()) {
+ return SDCard.instance().getDirectory() + '/' + title + ".jpg";
+ } else {
+ return DIRECTORY + '/' + title + ".jpg";
+ }
} else {
return RAW_DIRECTORY + '/' + title + ".raw";
}
}
public static long getAvailableSpace() {
- 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;
- }
+ if (isSaveSDCard() && SDCard.instance().isWriteable()) {
+ File dir = new File(SDCard.instance().getDirectory());
+ dir.mkdirs();
+ try {
+ StatFs stat = new StatFs(SDCard.instance().getDirectory());
+ long ret = stat.getAvailableBlocks() * (long) stat.getBlockSize();
+ return ret;
+ } 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;
+ }
- File dir = new File(DIRECTORY);
- dir.mkdirs();
- if (!dir.isDirectory() || !dir.canWrite()) {
- return UNAVAILABLE;
- }
+ 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, "Fail to access external storage", e);
+ 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;
}
- return UNKNOWN_SIZE;
}
/**