diff options
author | Bobby Georgescu <georgescu@google.com> | 2013-06-20 01:01:30 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-06-20 01:01:31 +0000 |
commit | 659f0694f1a63d3c3aadf13425ca1fe027b1152a (patch) | |
tree | 3eb8b33f42008c8507dc4d858247cc5398b8a5cb /src/com/android/gallery3d | |
parent | 923770ce24214ce3dc2fe96fe7c66b8567d4380f (diff) | |
parent | 9e908d9cd407778633af5337b2e98f7313bbbb86 (diff) | |
download | android_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.java | 1 | ||||
-rw-r--r-- | src/com/android/gallery3d/ingest/MtpDeviceIndex.java | 37 | ||||
-rw-r--r-- | src/com/android/gallery3d/ingest/ui/MtpImageView.java | 11 |
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; |