diff options
author | Santhosh Kumar H E <skhara@codeaurora.org> | 2014-01-21 19:21:42 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-02-27 05:01:12 -0800 |
commit | b2da1c165bb60154b7cc64db8b7d832fa02b2708 (patch) | |
tree | 9a695f64007217b00399651da4f19eca0a3c2fe6 /src/com/android/camera/Storage.java | |
parent | 40aad1d5fb7ad8828b25c502165eaa557327edc2 (diff) | |
download | android_packages_apps_Snap-b2da1c165bb60154b7cc64db8b7d832fa02b2708.tar.gz android_packages_apps_Snap-b2da1c165bb60154b7cc64db8b7d832fa02b2708.tar.bz2 android_packages_apps_Snap-b2da1c165bb60154b7cc64db8b7d832fa02b2708.zip |
Camera: Add a feature to choose where to store the picture and video
Add a feature to choose use SDcard or phone to store picture
and video captured by camera and camcorder.
Some of the changes are taken from:
I987a691c93edc4250fe0366d0623c85ea0152117
CRs-Fixed: 619806
Change-Id: I009df4c70f0a1b49b20750f806c799f025bb6197
Diffstat (limited to 'src/com/android/camera/Storage.java')
-rw-r--r-- | src/com/android/camera/Storage.java | 70 |
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; } /** |