summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/Storage.java
diff options
context:
space:
mode:
authorChia-chi Yeh <chiachi@android.com>2010-12-22 14:41:10 +0800
committerChia-chi Yeh <chiachi@android.com>2010-12-22 17:02:04 +0800
commit721d2d2a963799fad4bda9bb4b278c24fc469303 (patch)
tree28676ac38664190e40c592679c6ba396d08b5bb6 /src/com/android/camera/Storage.java
parent4e4a01ffea6c4406c06087bf49b444abe114ef9c (diff)
downloadpackages_apps_LegacyCamera-721d2d2a963799fad4bda9bb4b278c24fc469303.zip
packages_apps_LegacyCamera-721d2d2a963799fad4bda9bb4b278c24fc469303.tar.gz
packages_apps_LegacyCamera-721d2d2a963799fad4bda9bb4b278c24fc469303.tar.bz2
Check and create directories in Storage.getAvailableSpace().
Since creating directories and files is not an atomic operation, there is no way to prevent MediaRecorder.prepare() from throwing exceptions. Now we let Storage.getAvailableSpace() to create the directory and then bail out gracefully if it still fails. Bug: 3304420 Change-Id: I98f1975b90250d63b60b36950e5813528862cc98
Diffstat (limited to 'src/com/android/camera/Storage.java')
-rw-r--r--src/com/android/camera/Storage.java31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/com/android/camera/Storage.java b/src/com/android/camera/Storage.java
index bd42828..a42d03c 100644
--- a/src/com/android/camera/Storage.java
+++ b/src/com/android/camera/Storage.java
@@ -20,24 +20,37 @@ import android.os.Environment;
import android.os.StatFs;
import android.util.Log;
+import java.io.File;
+
class Storage {
private static final String TAG = "CameraStorage";
+ private static final String DCIM =
+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).toString();
+
+ public static final String DIRECTORY = DCIM + "/Camera";
+
public static final long UNAVAILABLE = -1L;
public static final long PREPARING = -2L;
public static final long UNKNOWN_SIZE = -3L;
public static long getAvailableSpace() {
+ String state = Environment.getExternalStorageState();
+ 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;
+ }
+
try {
- String state = Environment.getExternalStorageState();
- if (Environment.MEDIA_CHECKING.equals(state)) {
- return PREPARING;
- }
- if (!Environment.MEDIA_MOUNTED.equals(state)) {
- return UNAVAILABLE;
- }
- StatFs stat = new StatFs(
- Environment.getExternalStorageDirectory().toString());
+ StatFs stat = new StatFs(DIRECTORY);
return stat.getAvailableBlocks() * (long) stat.getBlockSize();
} catch (Exception e) {
Log.i(TAG, "Fail to access external storage", e);