summaryrefslogtreecommitdiff
path: root/src/com
diff options
context:
space:
mode:
authorSteve McKay <smckay@google.com>2017-08-01 15:02:04 -0700
committerSteve McKay <smckay@google.com>2017-08-02 09:45:08 -0700
commit39e5dad26b0576269342bb10dbc11ab47c2ce1d2 (patch)
tree3da3b748a0325bdb728d0f39742341a77a6dbdc6 /src/com
parenteec601dfae6bf0b23fe8fee96fecb3d49f38b9ad (diff)
downloadMediaProvider-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.java26
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);
}
}