diff options
author | 2015-12-18 05:50:21 +0100 | |
---|---|---|
committer | 2016-01-19 09:43:35 +0900 | |
commit | 5a8b9627c7fdacc94791fb3024386739f8cf9a56 (patch) | |
tree | 55b997fe9999730d9a5171f9ad3db5b3d3a8070b | |
parent | 1c78b60a4969ae46fde459e9b2848c641ba7aa64 (diff) |
Extend MediaScanner and MtpDatabase to support RAW image files
Bug: 25871812
Change-Id: Iee92632585dc9020238a9b562defd06d6d2a91dc
-rw-r--r-- | api/current.txt | 1 | ||||
-rw-r--r-- | api/system-current.txt | 1 | ||||
-rw-r--r-- | api/test-current.txt | 1 | ||||
-rw-r--r-- | media/java/android/media/MediaFile.java | 48 | ||||
-rw-r--r-- | media/java/android/media/MediaScanner.java | 3 | ||||
-rw-r--r-- | media/java/android/media/ThumbnailUtils.java | 3 | ||||
-rw-r--r-- | media/java/android/mtp/MtpConstants.java | 2 | ||||
-rwxr-xr-x | media/java/android/mtp/MtpDatabase.java | 2 |
8 files changed, 49 insertions, 12 deletions
diff --git a/api/current.txt b/api/current.txt index 0f3b09963d64..657c7c392561 100644 --- a/api/current.txt +++ b/api/current.txt @@ -22500,6 +22500,7 @@ package android.mtp { field public static final int FORMAT_AUDIBLE = 47364; // 0xb904 field public static final int FORMAT_AVI = 12298; // 0x300a field public static final int FORMAT_BMP = 14340; // 0x3804 + field public static final int FORMAT_DNG = 14353; // 0x3811 field public static final int FORMAT_DPOF = 12294; // 0x3006 field public static final int FORMAT_EXECUTABLE = 12291; // 0x3003 field public static final int FORMAT_EXIF_JPEG = 14337; // 0x3801 diff --git a/api/system-current.txt b/api/system-current.txt index 360a40bddfc7..459dc5996627 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -24056,6 +24056,7 @@ package android.mtp { field public static final int FORMAT_AUDIBLE = 47364; // 0xb904 field public static final int FORMAT_AVI = 12298; // 0x300a field public static final int FORMAT_BMP = 14340; // 0x3804 + field public static final int FORMAT_DNG = 14353; // 0x3811 field public static final int FORMAT_DPOF = 12294; // 0x3006 field public static final int FORMAT_EXECUTABLE = 12291; // 0x3003 field public static final int FORMAT_EXIF_JPEG = 14337; // 0x3801 diff --git a/api/test-current.txt b/api/test-current.txt index fb11fcc26b2e..d78973f16d82 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -22508,6 +22508,7 @@ package android.mtp { field public static final int FORMAT_AUDIBLE = 47364; // 0xb904 field public static final int FORMAT_AVI = 12298; // 0x300a field public static final int FORMAT_BMP = 14340; // 0x3804 + field public static final int FORMAT_DNG = 14353; // 0x3811 field public static final int FORMAT_DPOF = 12294; // 0x3006 field public static final int FORMAT_EXECUTABLE = 12291; // 0x3003 field public static final int FORMAT_EXIF_JPEG = 14337; // 0x3801 diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java index 526656ae8fe9..7d76e741cade 100644 --- a/media/java/android/media/MediaFile.java +++ b/media/java/android/media/MediaFile.java @@ -52,7 +52,7 @@ public class MediaFile { public static final int FILE_TYPE_IMY = 13; private static final int FIRST_MIDI_FILE_TYPE = FILE_TYPE_MID; private static final int LAST_MIDI_FILE_TYPE = FILE_TYPE_IMY; - + // Video file types public static final int FILE_TYPE_MP4 = 21; public static final int FILE_TYPE_M4V = 22; @@ -66,7 +66,7 @@ public class MediaFile { public static final int FILE_TYPE_WEBM = 30; private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4; private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_WEBM; - + // More video file types public static final int FILE_TYPE_MP2PS = 200; private static final int FIRST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS; @@ -81,7 +81,19 @@ public class MediaFile { public static final int FILE_TYPE_WEBP = 36; private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG; private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WEBP; - + + // Raw image file types + public static final int FILE_TYPE_DNG = 300; + public static final int FILE_TYPE_CR2 = 301; + public static final int FILE_TYPE_NEF = 302; + public static final int FILE_TYPE_NRW = 303; + public static final int FILE_TYPE_ARW = 304; + public static final int FILE_TYPE_RW2 = 305; + public static final int FILE_TYPE_ORF = 306; + public static final int FILE_TYPE_RAF = 307; + private static final int FIRST_RAW_IMAGE_FILE_TYPE = FILE_TYPE_DNG; + private static final int LAST_RAW_IMAGE_FILE_TYPE = FILE_TYPE_RAF; + // Playlist file types public static final int FILE_TYPE_M3U = 41; public static final int FILE_TYPE_PLS = 42; @@ -105,17 +117,17 @@ public class MediaFile { public static final int FILE_TYPE_MS_EXCEL = 105; public static final int FILE_TYPE_MS_POWERPOINT = 106; public static final int FILE_TYPE_ZIP = 107; - + public static class MediaFileType { public final int fileType; public final String mimeType; - + MediaFileType(int fileType, String mimeType) { this.fileType = fileType; this.mimeType = mimeType; } } - + private static final HashMap<String, MediaFileType> sFileTypeMap = new HashMap<String, MediaFileType>(); private static final HashMap<String, Integer> sMimeTypeMap @@ -182,7 +194,7 @@ public class MediaFile { addFileType("AAC", FILE_TYPE_AAC, "audio/aac", MtpConstants.FORMAT_AAC); addFileType("AAC", FILE_TYPE_AAC, "audio/aac-adts", MtpConstants.FORMAT_AAC); addFileType("MKA", FILE_TYPE_MKA, "audio/x-matroska"); - + addFileType("MID", FILE_TYPE_MID, "audio/midi"); addFileType("MIDI", FILE_TYPE_MID, "audio/midi"); addFileType("XMF", FILE_TYPE_MID, "audio/midi"); @@ -192,7 +204,7 @@ public class MediaFile { addFileType("RTX", FILE_TYPE_MID, "audio/midi"); addFileType("OTA", FILE_TYPE_MID, "audio/midi"); addFileType("MXMF", FILE_TYPE_MID, "audio/midi"); - + addFileType("MPEG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG); addFileType("MPG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG); addFileType("MP4", FILE_TYPE_MP4, "video/mp4", MtpConstants.FORMAT_MPEG); @@ -218,7 +230,16 @@ public class MediaFile { addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp", MtpConstants.FORMAT_BMP); addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp"); addFileType("WEBP", FILE_TYPE_WEBP, "image/webp"); - + + addFileType("DNG", FILE_TYPE_DNG, "image/x-adobe-dng", MtpConstants.FORMAT_DNG); + addFileType("CR2", FILE_TYPE_CR2, "image/x-canon-cr2"); + addFileType("NEF", FILE_TYPE_NEF, "image/x-nikon-nef"); + addFileType("NRW", FILE_TYPE_NRW, "image/x-nikon-nrw"); + addFileType("ARW", FILE_TYPE_ARW, "image/x-sony-arw"); + addFileType("RW2", FILE_TYPE_RW2, "image/x-panasonic-rw2"); + addFileType("ORF", FILE_TYPE_ORF, "image/x-olympus-orf"); + addFileType("RAF", FILE_TYPE_RAF, "image/x-fuji-raf"); + addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); addFileType("M3U", FILE_TYPE_M3U, "application/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST); @@ -258,7 +279,14 @@ public class MediaFile { public static boolean isImageFileType(int fileType) { return (fileType >= FIRST_IMAGE_FILE_TYPE && - fileType <= LAST_IMAGE_FILE_TYPE); + fileType <= LAST_IMAGE_FILE_TYPE) + || (fileType >= FIRST_RAW_IMAGE_FILE_TYPE && + fileType <= LAST_RAW_IMAGE_FILE_TYPE); + } + + public static boolean isRawImageFileType(int fileType) { + return (fileType >= FIRST_RAW_IMAGE_FILE_TYPE && + fileType <= LAST_RAW_IMAGE_FILE_TYPE); } public static boolean isPlayListFileType(int fileType) { diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java index dfe024a03ef8..78f357f9cea8 100644 --- a/media/java/android/media/MediaScanner.java +++ b/media/java/android/media/MediaScanner.java @@ -899,7 +899,8 @@ public class MediaScanner implements AutoCloseable { values.put(Audio.Media.IS_ALARM, alarms); values.put(Audio.Media.IS_MUSIC, music); values.put(Audio.Media.IS_PODCAST, podcasts); - } else if (mFileType == MediaFile.FILE_TYPE_JPEG && !mNoMedia) { + } else if ((mFileType == MediaFile.FILE_TYPE_JPEG + || MediaFile.isRawImageFileType(mFileType)) && !mNoMedia) { ExifInterface exif = null; try { exif = new ExifInterface(entry.mPath); diff --git a/media/java/android/media/ThumbnailUtils.java b/media/java/android/media/ThumbnailUtils.java index daa5fa5f6ea0..abd6f4a49acf 100644 --- a/media/java/android/media/ThumbnailUtils.java +++ b/media/java/android/media/ThumbnailUtils.java @@ -92,7 +92,8 @@ public class ThumbnailUtils { SizedThumbnailBitmap sizedThumbnailBitmap = new SizedThumbnailBitmap(); Bitmap bitmap = null; MediaFileType fileType = MediaFile.getFileType(filePath); - if (fileType != null && fileType.fileType == MediaFile.FILE_TYPE_JPEG) { + if (fileType != null && (fileType.fileType == MediaFile.FILE_TYPE_JPEG + || MediaFile.isRawImageFileType(fileType.fileType))) { createThumbnailFromEXIF(filePath, targetSize, maxPixels, sizedThumbnailBitmap); bitmap = sizedThumbnailBitmap.mBitmap; } diff --git a/media/java/android/mtp/MtpConstants.java b/media/java/android/mtp/MtpConstants.java index b2a5a444d0f7..bdd86439bae0 100644 --- a/media/java/android/mtp/MtpConstants.java +++ b/media/java/android/mtp/MtpConstants.java @@ -202,6 +202,8 @@ public final class MtpConstants { public static final int FORMAT_JP2 = 0x380F; /** Format code for JPX files */ public static final int FORMAT_JPX = 0x3810; + /** Format code for DNG files */ + public static final int FORMAT_DNG = 0x3811; /** Format code for firmware files */ public static final int FORMAT_UNDEFINED_FIRMWARE = 0xB802; /** Format code for Windows image files */ diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java index bc96e2ea8989..29bcc1928115 100755 --- a/media/java/android/mtp/MtpDatabase.java +++ b/media/java/android/mtp/MtpDatabase.java @@ -587,6 +587,7 @@ public class MtpDatabase implements AutoCloseable { MtpConstants.FORMAT_PLS_PLAYLIST, MtpConstants.FORMAT_XML_DOCUMENT, MtpConstants.FORMAT_FLAC, + MtpConstants.FORMAT_DNG, }; } @@ -696,6 +697,7 @@ public class MtpDatabase implements AutoCloseable { case MtpConstants.FORMAT_GIF: case MtpConstants.FORMAT_PNG: case MtpConstants.FORMAT_BMP: + case MtpConstants.FORMAT_DNG: return IMAGE_PROPERTIES; default: return FILE_PROPERTIES; |