summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/MenuHelper.java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-01-09 17:51:25 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-01-09 17:51:25 -0800
commitb97ccf3f20bee44daf70f10966809e39e30ab4f7 (patch)
treefb6c421cd04ffed74e50cd62e4fdab34d5a9f448 /src/com/android/camera/MenuHelper.java
parent0eaec58e292ce4eaa6baadecf643f0f65e48d278 (diff)
downloadLegacyCamera-b97ccf3f20bee44daf70f10966809e39e30ab4f7.zip
LegacyCamera-b97ccf3f20bee44daf70f10966809e39e30ab4f7.tar.gz
LegacyCamera-b97ccf3f20bee44daf70f10966809e39e30ab4f7.tar.bz2
auto import from //branches/cupcake/...@125939
Diffstat (limited to 'src/com/android/camera/MenuHelper.java')
-rw-r--r--src/com/android/camera/MenuHelper.java192
1 files changed, 162 insertions, 30 deletions
diff --git a/src/com/android/camera/MenuHelper.java b/src/com/android/camera/MenuHelper.java
index 9e4fb82..f8e1658 100644
--- a/src/com/android/camera/MenuHelper.java
+++ b/src/com/android/camera/MenuHelper.java
@@ -19,11 +19,15 @@ package com.android.camera;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
+import android.content.ActivityNotFoundException;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Handler;
import android.provider.MediaStore;
+import android.provider.MediaStore.Images;
import android.util.Config;
import android.util.Log;
import android.view.Menu;
@@ -266,18 +270,107 @@ public class MenuHelper {
} finally {
}
- ((TextView)d.findViewById(R.id.details_attrname_1)).setText(R.string.details_file_size);
- ((TextView)d.findViewById(R.id.details_attrvalu_1)).setText(lengthString);
+ ((TextView)d.findViewById(R.id.details_file_size_value))
+ .setText(lengthString);
+ int dimensionWidth = 0;
+ int dimensionHeight = 0;
if (isImage) {
- String dimensionsString = String.valueOf(image.getWidth() + " X " + image.getHeight());
- ((TextView)d.findViewById(R.id.details_attrname_2)).setText(R.string.details_image_resolution);
- ((TextView)d.findViewById(R.id.details_attrvalu_2)).setText(dimensionsString);
+ dimensionWidth = image.getWidth();
+ dimensionHeight = image.getHeight();
+ d.findViewById(R.id.details_duration_row).setVisibility(View.GONE);
+ d.findViewById(R.id.details_frame_rate_row).setVisibility(View.GONE);
+ d.findViewById(R.id.details_bit_rate_row).setVisibility(View.GONE);
+ d.findViewById(R.id.details_format_row).setVisibility(View.GONE);
+ d.findViewById(R.id.details_codec_row).setVisibility(View.GONE);
} else {
- d.findViewById(R.id.details_attrname_2).setVisibility(View.GONE);
- d.findViewById(R.id.details_attrvalu_2).setVisibility(View.GONE);
+ MediaMetadataRetriever retriever = new MediaMetadataRetriever();
+ retriever.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY);
+ retriever.setDataSource(image.getDataPath());
+ try {
+ dimensionWidth = Integer.parseInt(
+ retriever.extractMetadata(
+ MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
+ dimensionHeight = Integer.parseInt(
+ retriever.extractMetadata(
+ MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
+ } catch (NumberFormatException e) {
+ dimensionWidth = 0;
+ dimensionHeight = 0;
+ }
+
+ try {
+ long durationMs = Long.parseLong(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);
+ }
+ ((TextView)d.findViewById(R.id.details_duration_value))
+ .setText(durationValue);
+ } catch (NumberFormatException e) {
+ d.findViewById(R.id.details_frame_rate_row)
+ .setVisibility(View.GONE);
+ }
+
+ try {
+ String frame_rate = String.format(
+ activity.getString(R.string.details_fps),
+ Integer.parseInt(
+ retriever.extractMetadata(
+ MediaMetadataRetriever.METADATA_KEY_FRAME_RATE)));
+ ((TextView)d.findViewById(R.id.details_frame_rate_value))
+ .setText(frame_rate);
+ } catch (NumberFormatException e) {
+ d.findViewById(R.id.details_frame_rate_row)
+ .setVisibility(View.GONE);
+ }
+
+ try {
+ long bitRate = Long.parseLong(retriever.extractMetadata(
+ MediaMetadataRetriever.METADATA_KEY_BIT_RATE));
+ String bps;
+ if (bitRate < 1000000) {
+ bps = String.format(
+ activity.getString(R.string.details_kbps),
+ bitRate / 1000);
+ } else {
+ bps = String.format(
+ activity.getString(R.string.details_mbps),
+ ((double) bitRate) / 1000000.0);
+ }
+ ((TextView)d.findViewById(R.id.details_bit_rate_value))
+ .setText(bps);
+ } catch (NumberFormatException e) {
+ d.findViewById(R.id.details_bit_rate_row)
+ .setVisibility(View.GONE);
+ }
+
+ String format = retriever.extractMetadata(
+ MediaMetadataRetriever.METADATA_KEY_VIDEO_FORMAT);
+ ((TextView)d.findViewById(R.id.details_format_value))
+ .setText(format);
+
+ String codec = retriever.extractMetadata(
+ MediaMetadataRetriever.METADATA_KEY_CODEC);
+ ((TextView)d.findViewById(R.id.details_codec_value))
+ .setText(codec);
}
+ String dimensionsString = String.format(
+ activity.getString(R.string.details_dimension_x),
+ dimensionWidth, dimensionHeight);
+ ((TextView)d.findViewById(R.id.details_resolution_value))
+ .setText(dimensionsString);
+
String dateString = "";
long dateTaken = image.getDateTaken();
if (dateTaken != 0) {
@@ -285,12 +378,19 @@ public class MenuHelper {
java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat();
dateString = dateFormat.format(date);
- ((TextView)d.findViewById(R.id.details_attrname_3)).setText(R.string.details_date_taken);
- ((TextView)d.findViewById(R.id.details_attrvalu_3)).setText(dateString);
+ ((TextView)d.findViewById(R.id.details_date_taken_value))
+ .setText(dateString);
} else {
- d.findViewById(R.id.details_daterow).setVisibility(View.GONE);
+ d.findViewById(R.id.details_date_taken_row)
+ .setVisibility(View.GONE);
}
+ builder.setNeutralButton(R.string.details_ok,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
builder.setIcon(android.R.drawable.ic_dialog_info)
.setTitle(R.string.details_panel_title)
@@ -356,7 +456,9 @@ public class MenuHelper {
}
static void deleteImage(Activity activity, Runnable onDelete, IImage image) {
- deleteImageImpl(activity, onDelete, ImageManager.isImage(image));
+ if (image != null) {
+ deleteImageImpl(activity, onDelete, ImageManager.isImage(image));
+ }
}
private static void deleteImageImpl(Activity activity, final Runnable onDelete, boolean isPhoto) {
@@ -365,33 +467,38 @@ public class MenuHelper {
if (onDelete != null)
onDelete.run();
} else {
- android.app.AlertDialog.Builder b = new android.app.AlertDialog.Builder(activity);
- b.setIcon(android.R.drawable.ic_dialog_alert);
- b.setTitle(R.string.confirm_delete_title);
- b.setMessage(isPhoto? R.string.confirm_delete_message
- : R.string.confirm_delete_video_message);
- b.setPositiveButton(android.R.string.ok, new android.content.DialogInterface.OnClickListener() {
- public void onClick(android.content.DialogInterface v, int x) {
- if (onDelete != null)
- onDelete.run();
- }
- });
- b.setNegativeButton(android.R.string.cancel, new android.content.DialogInterface.OnClickListener() {
- public void onClick(android.content.DialogInterface v, int x) {
-
- }
- });
- b.create().show();
+ displayDeleteDialog(activity, onDelete, isPhoto);
}
}
+ public static void displayDeleteDialog(Activity activity,
+ final Runnable onDelete, boolean isPhoto) {
+ android.app.AlertDialog.Builder b = new android.app.AlertDialog.Builder(activity);
+ b.setIcon(android.R.drawable.ic_dialog_alert);
+ b.setTitle(R.string.confirm_delete_title);
+ b.setMessage(isPhoto? R.string.confirm_delete_message
+ : R.string.confirm_delete_video_message);
+ b.setPositiveButton(android.R.string.ok, new android.content.DialogInterface.OnClickListener() {
+ public void onClick(android.content.DialogInterface v, int x) {
+ if (onDelete != null)
+ onDelete.run();
+ }
+ });
+ b.setNegativeButton(android.R.string.cancel, new android.content.DialogInterface.OnClickListener() {
+ public void onClick(android.content.DialogInterface v, int x) {
+
+ }
+ });
+ b.create().show();
+ }
+
static void addSwitchModeMenuItem(Menu menu, final Activity activity,
final boolean switchToVideo) {
int group = switchToVideo ? MenuHelper.IMAGE_MODE_ITEM : MenuHelper.VIDEO_MODE_ITEM;
int labelId = switchToVideo ? R.string.switch_to_video_lable
: R.string.switch_to_camera_lable;
int iconId = switchToVideo ? R.drawable.ic_menu_camera_video_view
- : R.drawable.ic_menu_camera;
+ : android.R.drawable.ic_menu_camera;
MenuItem item = menu.add(group, MENU_SWITCH_CAMERA_MODE, 0,
labelId).setOnMenuItemClickListener(
new OnMenuItemClickListener() {
@@ -408,6 +515,26 @@ public class MenuHelper {
item.setIcon(iconId);
}
+ static void gotoStillImageCapture(Activity activity) {
+ Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
+ try {
+ activity.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ Log.e(TAG, "Could not start still image capture activity", e);
+ }
+ }
+
+ static void gotoCameraImageGallery(Activity activity) {
+ Uri target = Images.Media.INTERNAL_CONTENT_URI.buildUpon().appendQueryParameter("bucketId",
+ ImageManager.CAMERA_IMAGE_BUCKET_ID).build();
+ Intent intent = new Intent(Intent.ACTION_VIEW, target);
+ try {
+ activity.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ Log.e(TAG, "Could not start gallery activity", e);
+ }
+ }
+
static void addCaptureMenuItems(Menu menu, final Activity activity) {
menu.add(0, MENU_CAPTURE_PICTURE, 1, R.string.capture_picture)
@@ -423,7 +550,7 @@ public class MenuHelper {
return true;
}
})
- .setIcon(R.drawable.ic_menu_camera);
+ .setIcon(android.R.drawable.ic_menu_camera);
menu.add(0, MENU_CAPTURE_VIDEO, 2, R.string.capture_video)
.setOnMenuItemClickListener(
@@ -473,5 +600,10 @@ public class MenuHelper {
? android.content.pm.ActivityInfo.SCREEN_ORIENTATION_USER
: req);
}
+
+ static void setFlipOrientationEnabled(Activity activity, MenuItem flipItem) {
+ int keyboard = activity.getResources().getConfiguration().hardKeyboardHidden;
+ flipItem.setEnabled(keyboard != android.content.res.Configuration.HARDKEYBOARDHIDDEN_NO);
+ }
}