summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d
diff options
context:
space:
mode:
authorBobby Georgescu <georgescu@google.com>2013-06-20 01:01:30 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-06-20 01:01:31 +0000
commit659f0694f1a63d3c3aadf13425ca1fe027b1152a (patch)
tree3eb8b33f42008c8507dc4d858247cc5398b8a5cb /src/com/android/gallery3d
parent923770ce24214ce3dc2fe96fe7c66b8567d4380f (diff)
parent9e908d9cd407778633af5337b2e98f7313bbbb86 (diff)
downloadandroid_packages_apps_Snap-659f0694f1a63d3c3aadf13425ca1fe027b1152a.tar.gz
android_packages_apps_Snap-659f0694f1a63d3c3aadf13425ca1fe027b1152a.tar.bz2
android_packages_apps_Snap-659f0694f1a63d3c3aadf13425ca1fe027b1152a.zip
Merge "Add support for importing videos in MTP importer" into gb-ub-photos-carlsbad
Diffstat (limited to 'src/com/android/gallery3d')
-rw-r--r--src/com/android/gallery3d/ingest/ImportTask.java1
-rw-r--r--src/com/android/gallery3d/ingest/MtpDeviceIndex.java37
-rw-r--r--src/com/android/gallery3d/ingest/ui/MtpImageView.java11
3 files changed, 40 insertions, 9 deletions
diff --git a/src/com/android/gallery3d/ingest/ImportTask.java b/src/com/android/gallery3d/ingest/ImportTask.java
index d850bb8e1..7d2d641a5 100644
--- a/src/com/android/gallery3d/ingest/ImportTask.java
+++ b/src/com/android/gallery3d/ingest/ImportTask.java
@@ -65,6 +65,7 @@ public class ImportTask implements Runnable {
List<MtpObjectInfo> objectsNotImported = new LinkedList<MtpObjectInfo>();
int visited = 0;
int total = mObjectsToImport.size();
+ mListener.onImportProgress(visited, total, null);
File dest = new File(Environment.getExternalStorageDirectory(), mDestAlbumName);
dest.mkdirs();
for (MtpObjectInfo object : mObjectsToImport) {
diff --git a/src/com/android/gallery3d/ingest/MtpDeviceIndex.java b/src/com/android/gallery3d/ingest/MtpDeviceIndex.java
index e873dd1ca..d30f94a87 100644
--- a/src/com/android/gallery3d/ingest/MtpDeviceIndex.java
+++ b/src/com/android/gallery3d/ingest/MtpDeviceIndex.java
@@ -26,8 +26,10 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.Stack;
/**
@@ -62,6 +64,27 @@ import java.util.Stack;
*/
public class MtpDeviceIndex {
+ public static final int FORMAT_MOV = 0x300D; // For some reason this is not in MtpConstants
+
+ public static final Set<Integer> SUPPORTED_IMAGE_FORMATS;
+ public static final Set<Integer> SUPPORTED_VIDEO_FORMATS;
+
+ static {
+ SUPPORTED_IMAGE_FORMATS = new HashSet<Integer>();
+ SUPPORTED_IMAGE_FORMATS.add(MtpConstants.FORMAT_JFIF);
+ SUPPORTED_IMAGE_FORMATS.add(MtpConstants.FORMAT_EXIF_JPEG);
+ SUPPORTED_IMAGE_FORMATS.add(MtpConstants.FORMAT_PNG);
+ SUPPORTED_IMAGE_FORMATS.add(MtpConstants.FORMAT_GIF);
+ SUPPORTED_IMAGE_FORMATS.add(MtpConstants.FORMAT_BMP);
+
+ SUPPORTED_VIDEO_FORMATS = new HashSet<Integer>();
+ SUPPORTED_VIDEO_FORMATS.add(MtpConstants.FORMAT_3GP_CONTAINER);
+ SUPPORTED_VIDEO_FORMATS.add(MtpConstants.FORMAT_AVI);
+ SUPPORTED_VIDEO_FORMATS.add(MtpConstants.FORMAT_MP4_CONTAINER);
+ SUPPORTED_VIDEO_FORMATS.add(MtpConstants.FORMAT_MPEG);
+ // TODO: add FORMAT_MOV once Media Scanner supports .mov files
+ }
+
@Override
public int hashCode() {
final int prime = 31;
@@ -492,14 +515,12 @@ public class MtpDeviceIndex {
for (int objectHandle : mDevice.getObjectHandles(storageId, 0, dirHandle)) {
MtpObjectInfo objectInfo = mDevice.getObjectInfo(objectHandle);
if (objectInfo == null) throw new IndexingException();
- switch (objectInfo.getFormat()) {
- case MtpConstants.FORMAT_JFIF:
- case MtpConstants.FORMAT_EXIF_JPEG:
- addObject(objectInfo);
- break;
- case MtpConstants.FORMAT_ASSOCIATION:
- pendingDirectories.add(objectHandle);
- break;
+ int format = objectInfo.getFormat();
+ if (format == MtpConstants.FORMAT_ASSOCIATION) {
+ pendingDirectories.add(objectHandle);
+ } else if (SUPPORTED_IMAGE_FORMATS.contains(format)
+ || SUPPORTED_VIDEO_FORMATS.contains(format)) {
+ addObject(objectInfo);
}
}
}
diff --git a/src/com/android/gallery3d/ingest/ui/MtpImageView.java b/src/com/android/gallery3d/ingest/ui/MtpImageView.java
index 67414c6c4..a773f4485 100644
--- a/src/com/android/gallery3d/ingest/ui/MtpImageView.java
+++ b/src/com/android/gallery3d/ingest/ui/MtpImageView.java
@@ -27,12 +27,16 @@ import android.os.Message;
import android.util.AttributeSet;
import android.widget.ImageView;
+import com.android.gallery3d.ingest.MtpDeviceIndex;
import com.android.gallery3d.ingest.data.BitmapWithMetadata;
import com.android.gallery3d.ingest.data.MtpBitmapFetch;
import java.lang.ref.WeakReference;
public class MtpImageView extends ImageView {
+ // We will use the thumbnail for images larger than this threshold
+ private static final int MAX_FULLSIZE_PREVIEW_SIZE = 8388608; // 8 megabytes
+
private int mObjectHandle;
private int mGeneration;
@@ -89,7 +93,12 @@ public class MtpImageView extends ImageView {
}
protected Object fetchMtpImageDataFromDevice(MtpDevice device, MtpObjectInfo info) {
- return MtpBitmapFetch.getFullsize(device, info);
+ if (info.getCompressedSize() <= MAX_FULLSIZE_PREVIEW_SIZE
+ && MtpDeviceIndex.SUPPORTED_IMAGE_FORMATS.contains(info.getFormat())) {
+ return MtpBitmapFetch.getFullsize(device, info);
+ } else {
+ return new BitmapWithMetadata(MtpBitmapFetch.getThumbnail(device, info), 0);
+ }
}
private float mLastBitmapWidth;