Merge "Add secure camera support." into gb-ub-photos-carlsbad
diff --git a/src/com/android/camera/data/LocalData.java b/src/com/android/camera/data/LocalData.java
index f81c9e5..9ebc9ca 100644
--- a/src/com/android/camera/data/LocalData.java
+++ b/src/com/android/camera/data/LocalData.java
@@ -21,6 +21,7 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.media.MediaMetadataRetriever;
import android.os.AsyncTask;
@@ -32,6 +33,7 @@
import android.widget.ImageView;
import com.android.camera.ui.FilmStripView;
+import com.android.gallery3d.R;
import java.util.Comparator;
import java.util.Date;
@@ -123,19 +125,23 @@
return false;
}
- @Override
- public View getView(Context c,
+ protected ImageView getImageView(Context c,
int decodeWidth, int decodeHeight, Drawable placeHolder) {
ImageView v = new ImageView(c);
- v.setImageDrawable(placeHolder);
+ v.setBackground(placeHolder);
- v.setScaleType(ImageView.ScaleType.FIT_XY);
BitmapLoadTask task = getBitmapLoadTask(v, decodeWidth, decodeHeight);
task.execute();
return v;
}
@Override
+ public View getView(Context c,
+ int decodeWidth, int decodeHeight, Drawable placeHolder) {
+ return getImageView(c, decodeWidth, decodeHeight, placeHolder);
+ }
+
+ @Override
public void prepare() {
synchronized (mUsing) {
mUsing = true;
@@ -179,8 +185,9 @@
Log.e(TAG, "Failed decoding bitmap for file:" + path);
return;
}
- mView.setScaleType(ImageView.ScaleType.FIT_XY);
- mView.setImageBitmap(bitmap);
+ BitmapDrawable d = new BitmapDrawable(bitmap);
+ d.setGravity(android.view.Gravity.FILL);
+ mView.setBackground(d);
}
}
}
@@ -403,6 +410,15 @@
}
@Override
+ public View getView(Context c,
+ int decodeWidth, int decodeHeight, Drawable placeHolder) {
+ ImageView v = getImageView(c, decodeWidth, decodeHeight, placeHolder);
+ v.setImageResource(R.drawable.ic_control_play);
+ v.setScaleType(ImageView.ScaleType.CENTER);
+ return v;
+ }
+
+ @Override
protected BitmapLoadTask getBitmapLoadTask(
ImageView v, int decodeWidth, int decodeHeight) {
return new VideoBitmapLoadTask(v);
diff --git a/src/com/android/gallery3d/filtershow/tools/SaveCopyTask.java b/src/com/android/gallery3d/filtershow/tools/SaveCopyTask.java
index 2862be2..9f7cba3 100644
--- a/src/com/android/gallery3d/filtershow/tools/SaveCopyTask.java
+++ b/src/com/android/gallery3d/filtershow/tools/SaveCopyTask.java
@@ -65,7 +65,10 @@
void onCursorResult(Cursor cursor);
}
- private static final String TIME_STAMP_NAME = "'IMG'_yyyyMMdd_HHmmss";
+ private static final String TIME_STAMP_NAME = "_yyyyMMdd_HHmmss";
+ private static final String PREFIX_PANO = "PANO";
+ private static final String PREFIX_IMG = "IMG";
+ private static final String POSTFIX_JPG = ".jpg";
private final Context context;
private final Uri sourceUri;
@@ -84,7 +87,7 @@
this.destinationFile = destination;
}
- saveFileName = new SimpleDateFormat(TIME_STAMP_NAME).format(new Date(
+ saveFileName = PREFIX_IMG + new SimpleDateFormat(TIME_STAMP_NAME).format(new Date(
System.currentTimeMillis()));
}
@@ -104,7 +107,10 @@
File saveDirectory = getFinalSaveDirectory(context, sourceUri);
String filename = new SimpleDateFormat(TIME_STAMP_NAME).format(new Date(
System.currentTimeMillis()));
- return new File(saveDirectory, filename + ".JPG");
+ if (hasPanoPrefix(context, sourceUri)) {
+ return new File(saveDirectory, PREFIX_PANO + filename + POSTFIX_JPG);
+ }
+ return new File(saveDirectory, PREFIX_IMG + filename + POSTFIX_JPG);
}
public Object getPanoramaXMPData(Uri source, ImagePreset preset) {
@@ -264,6 +270,33 @@
}
/**
+ * Gets the actual filename for a Uri from Gallery's ContentProvider.
+ */
+ private static String getTrueFilename(Context context, Uri src) {
+ if (context == null || src == null) {
+ return null;
+ }
+ final String[] trueName = new String[1];
+ querySource(context, src, new String[] {
+ ImageColumns.DATA
+ }, new ContentResolverQueryCallback() {
+ @Override
+ public void onCursorResult(Cursor cursor) {
+ trueName[0] = new File(cursor.getString(0)).getName();
+ }
+ });
+ return trueName[0];
+ }
+
+ /**
+ * Checks whether the true filename has the panorama image prefix.
+ */
+ private static boolean hasPanoPrefix(Context context, Uri src) {
+ String name = getTrueFilename(context, src);
+ return name != null && name.startsWith(PREFIX_PANO);
+ }
+
+ /**
* Insert the content (saved file) with proper source photo properties.
*/
public static Uri insertContent(Context context, Uri sourceUri, File file, String saveFileName,