From 39e5dad26b0576269342bb10dbc11ab47c2ce1d2 Mon Sep 17 00:00:00 2001 From: Steve McKay Date: Tue, 1 Aug 2017 15:02:04 -0700 Subject: Use MetadataReader directly. This allows us to delegate type checking to MetadataReader which cleans up a bunch of redundant checking across providers. Test: Manual Change-Id: Ib9214ef4192a89b554455d0b6df10a4121600c5e --- .../providers/media/MediaDocumentsProvider.java | 26 ++++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src/com') diff --git a/src/com/android/providers/media/MediaDocumentsProvider.java b/src/com/android/providers/media/MediaDocumentsProvider.java index 7c421882f..1300ed26c 100644 --- a/src/com/android/providers/media/MediaDocumentsProvider.java +++ b/src/com/android/providers/media/MediaDocumentsProvider.java @@ -50,11 +50,14 @@ import android.provider.MediaStore.Images; import android.provider.MediaStore.Images.ImageColumns; import android.provider.MediaStore.Video; import android.provider.MediaStore.Video.VideoColumns; +import android.provider.MetadataReader; import android.text.TextUtils; import android.text.format.DateFormat; import android.text.format.DateUtils; import android.util.Log; +import libcore.io.IoUtils; + import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -65,8 +68,6 @@ import java.util.HashMap; import java.util.Locale; import java.util.Map; -import libcore.io.IoUtils; - /** * Presents a {@link DocumentsContract} view of {@link MediaProvider} external * contents. @@ -271,25 +272,26 @@ public class MediaDocumentsProvider extends DocumentsProvider { String mimeType = getDocumentType(docId); - if (JPEG_MIME_TYPE.equals(mimeType) - || JPG_MIME_TYPE.equals(mimeType)) { - return getExifMetadata(docId, mimeType); + if (MetadataReader.isSupportedMimeType(mimeType)) { + return getDocumentMetadataFromStream(docId, mimeType); } else { return getDocumentMetadataFromIndex(docId); } } - private @Nullable Bundle getExifMetadata(String docId, String mimeType) { - - InputStream is = null; + private @Nullable Bundle getDocumentMetadataFromStream(String docId, String mimeType) { + assert MetadataReader.isSupportedMimeType(mimeType); + InputStream stream = null; try { - final ParcelFileDescriptor fd = openDocument(docId, "r", null); - is = new FileInputStream(fd.getFileDescriptor()); - return getDocumentMetadataFromStream(is, mimeType); + stream = new ParcelFileDescriptor.AutoCloseInputStream( + openDocument(docId, "r", null)); + Bundle metadata = new Bundle(); + MetadataReader.getMetadata(metadata, stream, mimeType, null); + return metadata; } catch (IOException io) { return null; } finally { - IoUtils.closeQuietly(is); + IoUtils.closeQuietly(stream); } } -- cgit v1.2.3