diff options
author | Steve McKay <smckay@google.com> | 2017-08-01 15:02:04 -0700 |
---|---|---|
committer | Steve McKay <smckay@google.com> | 2017-08-02 09:45:08 -0700 |
commit | 39e5dad26b0576269342bb10dbc11ab47c2ce1d2 (patch) | |
tree | 3da3b748a0325bdb728d0f39742341a77a6dbdc6 /src/com | |
parent | eec601dfae6bf0b23fe8fee96fecb3d49f38b9ad (diff) | |
download | MediaProvider-39e5dad26b0576269342bb10dbc11ab47c2ce1d2.tar.gz |
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
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/android/providers/media/MediaDocumentsProvider.java | 26 |
1 files changed, 14 insertions, 12 deletions
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); } } |