diff options
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/camera/Camera.java | 20 | ||||
-rw-r--r-- | src/com/android/camera/Storage.java | 31 | ||||
-rw-r--r-- | src/com/android/camera/VideoCamera.java | 25 |
3 files changed, 38 insertions, 38 deletions
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java index 0452138..d32e4fa 100644 --- a/src/com/android/camera/Camera.java +++ b/src/com/android/camera/Camera.java @@ -727,15 +727,11 @@ public class Camera extends NoSearchActivity implements View.OnClickListener, } mImageCapture.storeImage(jpegData, camera, mLocation); - // Calculate this in advance of each shot so we don't add to shutter + // Check this in advance of each shot so we don't add to shutter // latency. It's true that someone else could write to the SD card in // the mean time and fill it, but that could have happened between the // shutter press and saving the JPEG too. - calculatePicturesRemaining(); - - if (mPicturesRemaining < 1) { - updateStorageHint(); - } + checkStorage(); if (!mHandler.hasMessages(RESTART_PREVIEW)) { long now = System.currentTimeMillis(); @@ -1244,7 +1240,10 @@ public class Camera extends NoSearchActivity implements View.OnClickListener, } private void checkStorage() { - calculatePicturesRemaining(); + mPicturesRemaining = Storage.getAvailableSpace(); + if (mPicturesRemaining > 0) { + mPicturesRemaining /= 1500000; + } updateStorageHint(); } @@ -2171,13 +2170,6 @@ public class Camera extends NoSearchActivity implements View.OnClickListener, } } - private void calculatePicturesRemaining() { - mPicturesRemaining = Storage.getAvailableSpace(); - if (mPicturesRemaining > 0) { - mPicturesRemaining /= 1500000; - } - } - @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); 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); diff --git a/src/com/android/camera/VideoCamera.java b/src/com/android/camera/VideoCamera.java index dfec632..776a58b 100644 --- a/src/com/android/camera/VideoCamera.java +++ b/src/com/android/camera/VideoCamera.java @@ -1080,7 +1080,7 @@ public class VideoCamera extends NoSearchActivity Log.e(TAG, "Fail to close fd", e); } } else { - createVideoPath(mProfile.fileFormat); + generateVideoFilename(mProfile.fileFormat); mMediaRecorder.setOutputFile(mVideoFilename); } @@ -1143,7 +1143,7 @@ public class VideoCamera extends NoSearchActivity if (mCameraDevice != null) mCameraDevice.lock(); } - private void createVideoPath(int outputFileFormat) { + private void generateVideoFilename(int outputFileFormat) { long dateTaken = System.currentTimeMillis(); String title = createName(dateTaken); String filename = title + ".3gp"; // Used when emailing. @@ -1152,19 +1152,14 @@ public class VideoCamera extends NoSearchActivity filename = title + ".mp4"; mime = "video/mp4"; } - String cameraDirPath = ImageManager.CAMERA_IMAGE_BUCKET_NAME; - String filePath = cameraDirPath + "/" + filename; - File cameraDir = new File(cameraDirPath); - cameraDir.mkdirs(); - ContentValues values = new ContentValues(7); - values.put(Video.Media.TITLE, title); - values.put(Video.Media.DISPLAY_NAME, filename); - values.put(Video.Media.DATE_TAKEN, dateTaken); - values.put(Video.Media.MIME_TYPE, mime); - values.put(Video.Media.DATA, filePath); - mVideoFilename = filePath; - Log.v(TAG, "Current camera video filename: " + mVideoFilename); - mCurrentVideoValues = values; + mVideoFilename = Storage.DIRECTORY + '/' + filename; + mCurrentVideoValues = new ContentValues(7); + mCurrentVideoValues.put(Video.Media.TITLE, title); + mCurrentVideoValues.put(Video.Media.DISPLAY_NAME, filename); + mCurrentVideoValues.put(Video.Media.DATE_TAKEN, dateTaken); + mCurrentVideoValues.put(Video.Media.MIME_TYPE, mime); + mCurrentVideoValues.put(Video.Media.DATA, mVideoFilename); + Log.v(TAG, "New video filename: " + mVideoFilename); } private void registerVideo() { |