summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/MenuHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/MenuHelper.java')
-rw-r--r--src/com/android/camera/MenuHelper.java71
1 files changed, 58 insertions, 13 deletions
diff --git a/src/com/android/camera/MenuHelper.java b/src/com/android/camera/MenuHelper.java
index f8e1658..034c441 100644
--- a/src/com/android/camera/MenuHelper.java
+++ b/src/com/android/camera/MenuHelper.java
@@ -25,7 +25,9 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
+import android.os.Environment;
import android.os.Handler;
+import android.os.StatFs;
import android.provider.MediaStore;
import android.provider.MediaStore.Images;
import android.util.Config;
@@ -83,6 +85,9 @@ public class MenuHelper {
static public final int MENU_VIDEO_SHARE = 24;
static public final int MENU_VIDEO_TOSS = 27;
+ public static final int NO_STORAGE_ERROR = -1;
+ public static final int CANNOT_STAT_ERROR = -2;
+
public interface MenuItemsResult {
public void gettingReadyToOpen(Menu menu, ImageManager.IImage image);
public void aboutToCall(MenuItem item, ImageManager.IImage image);
@@ -300,20 +305,10 @@ public class MenuHelper {
}
try {
- long durationMs = Long.parseLong(retriever.extractMetadata(
+ int durationMs = Integer.parseInt(retriever.extractMetadata(
MediaMetadataRetriever.METADATA_KEY_DURATION));
- long duration = durationMs / 1000;
- long h = duration / 3600;
- long m = (duration - h * 3600) / 60;
- long s = duration - (h * 3600 + m * 60);
- String durationValue;
- if (h == 0) {
- durationValue = String.format(
- activity.getString(R.string.details_ms), m, s);
- } else {
- durationValue = String.format(
- activity.getString(R.string.details_hms), h, m, s);
- }
+ String durationValue = formatDuration(
+ activity, durationMs);
((TextView)d.findViewById(R.id.details_duration_value))
.setText(durationValue);
} catch (NumberFormatException e) {
@@ -605,5 +600,55 @@ public class MenuHelper {
int keyboard = activity.getResources().getConfiguration().hardKeyboardHidden;
flipItem.setEnabled(keyboard != android.content.res.Configuration.HARDKEYBOARDHIDDEN_NO);
}
+
+ public static String formatDuration(final Activity activity, int durationMs) {
+ int duration = durationMs / 1000;
+ int h = duration / 3600;
+ int m = (duration - h * 3600) / 60;
+ int s = duration - (h * 3600 + m * 60);
+ String durationValue;
+ if (h == 0) {
+ durationValue = String.format(
+ activity.getString(R.string.details_ms), m, s);
+ } else {
+ durationValue = String.format(
+ activity.getString(R.string.details_hms), h, m, s);
+ }
+ return durationValue;
+ }
+
+
+ public static void showStorageToast(Activity activity) {
+ String noStorageText = null;
+ int remaining = calculatePicturesRemaining();
+
+ if (remaining == MenuHelper.NO_STORAGE_ERROR) {
+ noStorageText = activity.getString(R.string.no_storage);
+ } else if (remaining < 1) {
+ noStorageText = activity.getString(R.string.not_enough_space);
+ }
+
+ if (noStorageText != null) {
+ Toast.makeText(activity, noStorageText, 5000).show();
+ }
+ }
+
+ public static int calculatePicturesRemaining() {
+ try {
+ if (!ImageManager.hasStorage()) {
+ return NO_STORAGE_ERROR;
+ } else {
+ String storageDirectory = Environment.getExternalStorageDirectory().toString();
+ StatFs stat = new StatFs(storageDirectory);
+ float remaining = ((float)stat.getAvailableBlocks() * (float)stat.getBlockSize()) / 400000F;
+ return (int)remaining;
+ }
+ } catch (Exception ex) {
+ // if we can't stat the filesystem then we don't know how many
+ // pictures are remaining. it might be zero but just leave it
+ // blank since we really don't know.
+ return CANNOT_STAT_ERROR;
+ }
+ }
}