MediaFile.java revision 5a8b9627c7fdacc94791fb3024386739f8cf9a56
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.media; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1968db99ef761456ffaa0c4b918ce75dfc0892784aJames Dongimport android.media.DecoderCapabilities; 2068db99ef761456ffaa0c4b918ce75dfc0892784aJames Dongimport android.media.DecoderCapabilities.VideoDecoder; 2168db99ef761456ffaa0c4b918ce75dfc0892784aJames Dongimport android.media.DecoderCapabilities.AudioDecoder; 220cd0136d440cf6ad9d5fab430269116786e671ecMike Lockwoodimport android.mtp.MtpConstants; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.HashMap; 2568db99ef761456ffaa0c4b918ce75dfc0892784aJames Dongimport java.util.List; 26dcb1a58cf9d66b36de825dae2fa0cb0529e60680Elliott Hughesimport java.util.Locale; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MediaScanner helper class. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class MediaFile { 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Audio file types 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_MP3 = 1; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_M4A = 2; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_WAV = 3; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_AMR = 4; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_AWB = 5; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_WMA = 6; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_OGG = 7; 43974ff946d114610ec41172fb6076d9d8810c3680Ravi K Yenduri public static final int FILE_TYPE_AAC = 8; 44072f5247ef893e683728263a540bb93daafda376Andreas Huber public static final int FILE_TYPE_MKA = 9; 45f9f223edb408cdc9fd946dc099a86857079a639fGlenn Kasten public static final int FILE_TYPE_FLAC = 10; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3; 47f9f223edb408cdc9fd946dc099a86857079a639fGlenn Kasten private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_FLAC; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // MIDI file types 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_MID = 11; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_SMF = 12; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_IMY = 13; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FIRST_MIDI_FILE_TYPE = FILE_TYPE_MID; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int LAST_MIDI_FILE_TYPE = FILE_TYPE_IMY; 555a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Video file types 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_MP4 = 21; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_M4V = 22; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_3GPP = 23; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_3GPP2 = 24; 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_WMV = 25; 62974ff946d114610ec41172fb6076d9d8810c3680Ravi K Yenduri public static final int FILE_TYPE_ASF = 26; 63072f5247ef893e683728263a540bb93daafda376Andreas Huber public static final int FILE_TYPE_MKV = 27; 64a557b24ac4dd568d86b08753f7c0361d04f80d46Andreas Huber public static final int FILE_TYPE_MP2TS = 28; 65cabb7da7125a80c55233bd23959327424e9646ccAndreas Huber public static final int FILE_TYPE_AVI = 29; 66ff535914825f63999648030a02f57767593462f0Mike Lockwood public static final int FILE_TYPE_WEBM = 30; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4; 68ff535914825f63999648030a02f57767593462f0Mike Lockwood private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_WEBM; 695a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 70bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber // More video file types 71bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber public static final int FILE_TYPE_MP2PS = 200; 72bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber private static final int FIRST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS; 73bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber private static final int LAST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS; 74bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Image file types 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_JPEG = 31; 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_GIF = 32; 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_PNG = 33; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_BMP = 34; 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_WBMP = 35; 81d0881d95e2d4eceab37288f88f43f771e08eab65Vikas Arora public static final int FILE_TYPE_WEBP = 36; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG; 83d0881d95e2d4eceab37288f88f43f771e08eab65Vikas Arora private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WEBP; 845a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 855a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung // Raw image file types 865a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_DNG = 300; 875a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_CR2 = 301; 885a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_NEF = 302; 895a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_NRW = 303; 905a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_ARW = 304; 915a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_RW2 = 305; 925a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_ORF = 306; 935a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_RAF = 307; 945a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung private static final int FIRST_RAW_IMAGE_FILE_TYPE = FILE_TYPE_DNG; 955a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung private static final int LAST_RAW_IMAGE_FILE_TYPE = FILE_TYPE_RAF; 965a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Playlist file types 985dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_M3U = 41; 995dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_PLS = 42; 1005dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_WPL = 43; 1015dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_HTTPLIVE = 44; 1025dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U; 1045dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_HTTPLIVE; 105fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood 1065d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang // Drm file types 1075d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang public static final int FILE_TYPE_FL = 51; 1085d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang private static final int FIRST_DRM_FILE_TYPE = FILE_TYPE_FL; 1095d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang private static final int LAST_DRM_FILE_TYPE = FILE_TYPE_FL; 1105d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang 111fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood // Other popular file types 112fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_TEXT = 100; 113fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_HTML = 101; 114fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_PDF = 102; 115fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_XML = 103; 116fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_MS_WORD = 104; 117fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_MS_EXCEL = 105; 118fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_MS_POWERPOINT = 106; 119f9f223edb408cdc9fd946dc099a86857079a639fGlenn Kasten public static final int FILE_TYPE_ZIP = 107; 1205a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 121bd682b040833fce9e212c00c395b32bec7050f87Mike Lockwood public static class MediaFileType { 122bd682b040833fce9e212c00c395b32bec7050f87Mike Lockwood public final int fileType; 123bd682b040833fce9e212c00c395b32bec7050f87Mike Lockwood public final String mimeType; 1245a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaFileType(int fileType, String mimeType) { 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.fileType = fileType; 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mimeType = mimeType; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1305a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 13130c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, MediaFileType> sFileTypeMap 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new HashMap<String, MediaFileType>(); 13330c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, Integer> sMimeTypeMap 134d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood = new HashMap<String, Integer>(); 135d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood // maps file extension to MTP format code 13630c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, Integer> sFileTypeToFormatMap 137d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood = new HashMap<String, Integer>(); 138d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood // maps mime type to MTP format code 13930c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, Integer> sMimeTypeToFormatMap 140d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood = new HashMap<String, Integer>(); 141d815f79766984fce499e147ecbacc01914683f74Mike Lockwood // maps MTP format code to mime type 14230c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<Integer, String> sFormatToMimeTypeMap 143d815f79766984fce499e147ecbacc01914683f74Mike Lockwood = new HashMap<Integer, String>(); 144d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static void addFileType(String extension, int fileType, String mimeType) { 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sFileTypeMap.put(extension, new MediaFileType(fileType, mimeType)); 147d282ac8610f72d964105efefe41120a5340f1ce0Marco Nelissen sMimeTypeMap.put(mimeType, Integer.valueOf(fileType)); 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14968db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong 150d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood static void addFileType(String extension, int fileType, String mimeType, int mtpFormatCode) { 151d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood addFileType(extension, fileType, mimeType); 152d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood sFileTypeToFormatMap.put(extension, Integer.valueOf(mtpFormatCode)); 153d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood sMimeTypeToFormatMap.put(mimeType, Integer.valueOf(mtpFormatCode)); 154d815f79766984fce499e147ecbacc01914683f74Mike Lockwood sFormatToMimeTypeMap.put(mtpFormatCode, mimeType); 155d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 156d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood 15768db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong private static boolean isWMAEnabled() { 15868db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong List<AudioDecoder> decoders = DecoderCapabilities.getAudioDecoders(); 15916dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood int count = decoders.size(); 16016dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood for (int i = 0; i < count; i++) { 16116dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood AudioDecoder decoder = decoders.get(i); 16268db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong if (decoder == AudioDecoder.AUDIO_DECODER_WMA) { 16368db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong return true; 16468db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong } 16568db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong } 16668db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong return false; 16768db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong } 16868db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong 16916dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood private static boolean isWMVEnabled() { 17016dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood List<VideoDecoder> decoders = DecoderCapabilities.getVideoDecoders(); 17116dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood int count = decoders.size(); 17216dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood for (int i = 0; i < count; i++) { 17316dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood VideoDecoder decoder = decoders.get(i); 17416dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood if (decoder == VideoDecoder.VIDEO_DECODER_WMV) { 17516dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood return true; 17616dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 17716dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 17816dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood return false; 17916dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 18016dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static { 1825367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg", MtpConstants.FORMAT_MP3); 1832fe37b7005776c50fbb3a3661f5823fb6c890b81Mathias Franzén addFileType("MPGA", FILE_TYPE_MP3, "audio/mpeg", MtpConstants.FORMAT_MP3); 1845367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("M4A", FILE_TYPE_M4A, "audio/mp4", MtpConstants.FORMAT_MPEG); 1855367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav", MtpConstants.FORMAT_WAV); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("AMR", FILE_TYPE_AMR, "audio/amr"); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("AWB", FILE_TYPE_AWB, "audio/amr-wb"); 18868db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong if (isWMAEnabled()) { 1895367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma", MtpConstants.FORMAT_WMA); 1900ddbc35dc4974fbe18a4191e579b1eda5a7ef2b1Marco Nelissen } 191dc912ed9c6f1a0812bd07e5a24600c5b438a54bbMarco Nelissen addFileType("OGG", FILE_TYPE_OGG, "audio/ogg", MtpConstants.FORMAT_OGG); 1925367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("OGG", FILE_TYPE_OGG, "application/ogg", MtpConstants.FORMAT_OGG); 1935367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("OGA", FILE_TYPE_OGG, "application/ogg", MtpConstants.FORMAT_OGG); 1945367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("AAC", FILE_TYPE_AAC, "audio/aac", MtpConstants.FORMAT_AAC); 195f9cf277cda5d7cdf8383331892cca0734a850e19Gloria Wang addFileType("AAC", FILE_TYPE_AAC, "audio/aac-adts", MtpConstants.FORMAT_AAC); 196072f5247ef893e683728263a540bb93daafda376Andreas Huber addFileType("MKA", FILE_TYPE_MKA, "audio/x-matroska"); 1975a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("MID", FILE_TYPE_MID, "audio/midi"); 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("MIDI", FILE_TYPE_MID, "audio/midi"); 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("XMF", FILE_TYPE_MID, "audio/midi"); 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("RTTTL", FILE_TYPE_MID, "audio/midi"); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("SMF", FILE_TYPE_SMF, "audio/sp-midi"); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("IMY", FILE_TYPE_IMY, "audio/imelody"); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("RTX", FILE_TYPE_MID, "audio/midi"); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("OTA", FILE_TYPE_MID, "audio/midi"); 206eecadb9a84f357fb224592cc77603ff3e7c28f08Andreas Huber addFileType("MXMF", FILE_TYPE_MID, "audio/midi"); 2075a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2085367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("MPEG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG); 20928d1a4aaf3c338f42d7b71d4653be707f06948a6Mike Lockwood addFileType("MPG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG); 2105367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("MP4", FILE_TYPE_MP4, "video/mp4", MtpConstants.FORMAT_MPEG); 2115367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("M4V", FILE_TYPE_M4V, "video/mp4", MtpConstants.FORMAT_MPEG); 2125367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER); 2135367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER); 2145367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER); 2155367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER); 216072f5247ef893e683728263a540bb93daafda376Andreas Huber addFileType("MKV", FILE_TYPE_MKV, "video/x-matroska"); 217ff535914825f63999648030a02f57767593462f0Mike Lockwood addFileType("WEBM", FILE_TYPE_WEBM, "video/webm"); 218a557b24ac4dd568d86b08753f7c0361d04f80d46Andreas Huber addFileType("TS", FILE_TYPE_MP2TS, "video/mp2ts"); 219cabb7da7125a80c55233bd23959327424e9646ccAndreas Huber addFileType("AVI", FILE_TYPE_AVI, "video/avi"); 220a557b24ac4dd568d86b08753f7c0361d04f80d46Andreas Huber 22116dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood if (isWMVEnabled()) { 22216dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv", MtpConstants.FORMAT_WMV); 22316dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood addFileType("ASF", FILE_TYPE_ASF, "video/x-ms-asf"); 22416dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2265367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg", MtpConstants.FORMAT_EXIF_JPEG); 2275367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg", MtpConstants.FORMAT_EXIF_JPEG); 2285367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("GIF", FILE_TYPE_GIF, "image/gif", MtpConstants.FORMAT_GIF); 2295367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("PNG", FILE_TYPE_PNG, "image/png", MtpConstants.FORMAT_PNG); 2305367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp", MtpConstants.FORMAT_BMP); 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp"); 2327f61f5919d193d8ae158ce8a52ca69c9f2be8777Vikas Arora addFileType("WEBP", FILE_TYPE_WEBP, "image/webp"); 2335a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2345a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("DNG", FILE_TYPE_DNG, "image/x-adobe-dng", MtpConstants.FORMAT_DNG); 2355a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("CR2", FILE_TYPE_CR2, "image/x-canon-cr2"); 2365a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("NEF", FILE_TYPE_NEF, "image/x-nikon-nef"); 2375a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("NRW", FILE_TYPE_NRW, "image/x-nikon-nrw"); 2385a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("ARW", FILE_TYPE_ARW, "image/x-sony-arw"); 2395a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("RW2", FILE_TYPE_RW2, "image/x-panasonic-rw2"); 2405a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("ORF", FILE_TYPE_ORF, "image/x-olympus-orf"); 2415a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("RAF", FILE_TYPE_RAF, "image/x-fuji-raf"); 2425a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2435367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); 244b5c6afc208bd70eba386dbb2c0fb29b34e44e4d4Andreas Huber addFileType("M3U", FILE_TYPE_M3U, "application/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); 2455367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST); 2465367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", MtpConstants.FORMAT_WPL_PLAYLIST); 2475dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber addFileType("M3U8", FILE_TYPE_HTTPLIVE, "application/vnd.apple.mpegurl"); 2485dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber addFileType("M3U8", FILE_TYPE_HTTPLIVE, "audio/mpegurl"); 2495dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber addFileType("M3U8", FILE_TYPE_HTTPLIVE, "audio/x-mpegurl"); 250fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood 2515d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang addFileType("FL", FILE_TYPE_FL, "application/x-android-drm-fl"); 2525d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang 253fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("TXT", FILE_TYPE_TEXT, "text/plain", MtpConstants.FORMAT_TEXT); 254fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("HTM", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); 255fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("HTML", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); 256fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("PDF", FILE_TYPE_PDF, "application/pdf"); 257fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("DOC", FILE_TYPE_MS_WORD, "application/msword", MtpConstants.FORMAT_MS_WORD_DOCUMENT); 258fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("XLS", FILE_TYPE_MS_EXCEL, "application/vnd.ms-excel", MtpConstants.FORMAT_MS_EXCEL_SPREADSHEET); 259fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("PPT", FILE_TYPE_MS_POWERPOINT, "application/mspowerpoint", MtpConstants.FORMAT_MS_POWERPOINT_PRESENTATION); 260fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("FLAC", FILE_TYPE_FLAC, "audio/flac", MtpConstants.FORMAT_FLAC); 261fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("ZIP", FILE_TYPE_ZIP, "application/zip"); 262bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber addFileType("MPG", FILE_TYPE_MP2PS, "video/mp2p"); 263bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber addFileType("MPEG", FILE_TYPE_MP2PS, "video/mp2p"); 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 265c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isAudioFileType(int fileType) { 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ((fileType >= FIRST_AUDIO_FILE_TYPE && 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fileType <= LAST_AUDIO_FILE_TYPE) || 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (fileType >= FIRST_MIDI_FILE_TYPE && 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fileType <= LAST_MIDI_FILE_TYPE)); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 272c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isVideoFileType(int fileType) { 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (fileType >= FIRST_VIDEO_FILE_TYPE && 275bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber fileType <= LAST_VIDEO_FILE_TYPE) 276bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber || (fileType >= FIRST_VIDEO_FILE_TYPE2 && 277bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber fileType <= LAST_VIDEO_FILE_TYPE2); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 279c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isImageFileType(int fileType) { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (fileType >= FIRST_IMAGE_FILE_TYPE && 2825a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung fileType <= LAST_IMAGE_FILE_TYPE) 2835a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung || (fileType >= FIRST_RAW_IMAGE_FILE_TYPE && 2845a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung fileType <= LAST_RAW_IMAGE_FILE_TYPE); 2855a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung } 2865a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2875a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static boolean isRawImageFileType(int fileType) { 2885a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung return (fileType >= FIRST_RAW_IMAGE_FILE_TYPE && 2895a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung fileType <= LAST_RAW_IMAGE_FILE_TYPE); 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 291c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isPlayListFileType(int fileType) { 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (fileType >= FIRST_PLAYLIST_FILE_TYPE && 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fileType <= LAST_PLAYLIST_FILE_TYPE); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 296c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2975d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang public static boolean isDrmFileType(int fileType) { 2985d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang return (fileType >= FIRST_DRM_FILE_TYPE && 2995d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang fileType <= LAST_DRM_FILE_TYPE); 3005d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang } 3015d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static MediaFileType getFileType(String path) { 303dcb1a58cf9d66b36de825dae2fa0cb0529e60680Elliott Hughes int lastDot = path.lastIndexOf('.'); 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (lastDot < 0) 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 306dcb1a58cf9d66b36de825dae2fa0cb0529e60680Elliott Hughes return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase(Locale.ROOT)); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 308c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 30945b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori public static boolean isMimeTypeMedia(String mimeType) { 31045b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori int fileType = getFileTypeForMimeType(mimeType); 31145b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori return isAudioFileType(fileType) || isVideoFileType(fileType) 31245b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori || isImageFileType(fileType) || isPlayListFileType(fileType); 31345b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori } 31445b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori 315c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood // generates a title based on file name 316c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood public static String getFileTitle(String path) { 317c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood // extract file name after last slash 318c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood int lastSlash = path.lastIndexOf('/'); 319c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood if (lastSlash >= 0) { 320c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood lastSlash++; 321c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood if (lastSlash < path.length()) { 322c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood path = path.substring(lastSlash); 323c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 324c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 325c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood // truncate the file extension (if any) 326c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood int lastDot = path.lastIndexOf('.'); 327c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood if (lastDot > 0) { 328c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood path = path.substring(0, lastDot); 329c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 330c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood return path; 331c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 332c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getFileTypeForMimeType(String mimeType) { 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Integer value = sMimeTypeMap.get(mimeType); 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (value == null ? 0 : value.intValue()); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 338c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood public static String getMimeTypeForFile(String path) { 339c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood MediaFileType mediaFileType = getFileType(path); 340c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood return (mediaFileType == null ? null : mediaFileType.mimeType); 341c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 342c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 343d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood public static int getFormatCode(String fileName, String mimeType) { 344d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (mimeType != null) { 345d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood Integer value = sMimeTypeToFormatMap.get(mimeType); 346d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (value != null) { 347d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood return value.intValue(); 348d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 349d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 350d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood int lastDot = fileName.lastIndexOf('.'); 351d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (lastDot > 0) { 352dcb1a58cf9d66b36de825dae2fa0cb0529e60680Elliott Hughes String extension = fileName.substring(lastDot + 1).toUpperCase(Locale.ROOT); 353d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood Integer value = sFileTypeToFormatMap.get(extension); 354d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (value != null) { 355d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood return value.intValue(); 356d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 357d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 3585367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood return MtpConstants.FORMAT_UNDEFINED; 359d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 360d815f79766984fce499e147ecbacc01914683f74Mike Lockwood 361d815f79766984fce499e147ecbacc01914683f74Mike Lockwood public static String getMimeTypeForFormatCode(int formatCode) { 362d815f79766984fce499e147ecbacc01914683f74Mike Lockwood return sFormatToMimeTypeMap.get(formatCode); 363d815f79766984fce499e147ecbacc01914683f74Mike Lockwood } 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 365