MediaFile.java revision c9cb80e9e66c334eb82bf94e20a93c5b02719733
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; 72c9cb80e9e66c334eb82bf94e20a93c5b02719733Bryan Mawhinney public static final int FILE_TYPE_QT = 201; 73bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber private static final int FIRST_VIDEO_FILE_TYPE2 = FILE_TYPE_MP2PS; 74c9cb80e9e66c334eb82bf94e20a93c5b02719733Bryan Mawhinney private static final int LAST_VIDEO_FILE_TYPE2 = FILE_TYPE_QT; 75bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Image file types 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_JPEG = 31; 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_GIF = 32; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_PNG = 33; 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_BMP = 34; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int FILE_TYPE_WBMP = 35; 82d0881d95e2d4eceab37288f88f43f771e08eab65Vikas Arora public static final int FILE_TYPE_WEBP = 36; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG; 84d0881d95e2d4eceab37288f88f43f771e08eab65Vikas Arora private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WEBP; 855a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 865a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung // Raw image file types 875a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_DNG = 300; 885a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_CR2 = 301; 895a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_NEF = 302; 905a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_NRW = 303; 915a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_ARW = 304; 925a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_RW2 = 305; 935a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_ORF = 306; 945a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static final int FILE_TYPE_RAF = 307; 958409c0691fb128fef6244305977342776bddf919Jaesung Chung public static final int FILE_TYPE_PEF = 308; 968409c0691fb128fef6244305977342776bddf919Jaesung Chung public static final int FILE_TYPE_SRW = 309; 975a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung private static final int FIRST_RAW_IMAGE_FILE_TYPE = FILE_TYPE_DNG; 988409c0691fb128fef6244305977342776bddf919Jaesung Chung private static final int LAST_RAW_IMAGE_FILE_TYPE = FILE_TYPE_SRW; 995a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Playlist file types 1015dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_M3U = 41; 1025dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_PLS = 42; 1035dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_WPL = 43; 1045dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber public static final int FILE_TYPE_HTTPLIVE = 44; 1055dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U; 1075dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_HTTPLIVE; 108fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood 1095d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang // Drm file types 1105d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang public static final int FILE_TYPE_FL = 51; 1115d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang private static final int FIRST_DRM_FILE_TYPE = FILE_TYPE_FL; 1125d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang private static final int LAST_DRM_FILE_TYPE = FILE_TYPE_FL; 1135d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang 114fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood // Other popular file types 115fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_TEXT = 100; 116fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_HTML = 101; 117fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_PDF = 102; 118fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_XML = 103; 119fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_MS_WORD = 104; 120fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_MS_EXCEL = 105; 121fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood public static final int FILE_TYPE_MS_POWERPOINT = 106; 122f9f223edb408cdc9fd946dc099a86857079a639fGlenn Kasten public static final int FILE_TYPE_ZIP = 107; 1235a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 124bd682b040833fce9e212c00c395b32bec7050f87Mike Lockwood public static class MediaFileType { 125bd682b040833fce9e212c00c395b32bec7050f87Mike Lockwood public final int fileType; 126bd682b040833fce9e212c00c395b32bec7050f87Mike Lockwood public final String mimeType; 1275a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MediaFileType(int fileType, String mimeType) { 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.fileType = fileType; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this.mimeType = mimeType; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1335a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 13430c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, MediaFileType> sFileTypeMap 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new HashMap<String, MediaFileType>(); 13630c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, Integer> sMimeTypeMap 137d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood = new HashMap<String, Integer>(); 138d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood // maps file extension to MTP format code 13930c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, Integer> sFileTypeToFormatMap 140d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood = new HashMap<String, Integer>(); 141d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood // maps mime type to MTP format code 14230c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<String, Integer> sMimeTypeToFormatMap 143d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood = new HashMap<String, Integer>(); 144d815f79766984fce499e147ecbacc01914683f74Mike Lockwood // maps MTP format code to mime type 14530c918ce7fbe171944b28fc91b3f22b3d631872dGlenn Kasten private static final HashMap<Integer, String> sFormatToMimeTypeMap 146d815f79766984fce499e147ecbacc01914683f74Mike Lockwood = new HashMap<Integer, String>(); 147d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static void addFileType(String extension, int fileType, String mimeType) { 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sFileTypeMap.put(extension, new MediaFileType(fileType, mimeType)); 150d282ac8610f72d964105efefe41120a5340f1ce0Marco Nelissen sMimeTypeMap.put(mimeType, Integer.valueOf(fileType)); 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 15268db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong 153d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood static void addFileType(String extension, int fileType, String mimeType, int mtpFormatCode) { 154d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood addFileType(extension, fileType, mimeType); 155d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood sFileTypeToFormatMap.put(extension, Integer.valueOf(mtpFormatCode)); 156d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood sMimeTypeToFormatMap.put(mimeType, Integer.valueOf(mtpFormatCode)); 157d815f79766984fce499e147ecbacc01914683f74Mike Lockwood sFormatToMimeTypeMap.put(mtpFormatCode, mimeType); 158d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 159d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood 16068db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong private static boolean isWMAEnabled() { 16168db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong List<AudioDecoder> decoders = DecoderCapabilities.getAudioDecoders(); 16216dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood int count = decoders.size(); 16316dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood for (int i = 0; i < count; i++) { 16416dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood AudioDecoder decoder = decoders.get(i); 16568db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong if (decoder == AudioDecoder.AUDIO_DECODER_WMA) { 16668db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong return true; 16768db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong } 16868db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong } 16968db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong return false; 17068db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong } 17168db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong 17216dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood private static boolean isWMVEnabled() { 17316dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood List<VideoDecoder> decoders = DecoderCapabilities.getVideoDecoders(); 17416dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood int count = decoders.size(); 17516dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood for (int i = 0; i < count; i++) { 17616dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood VideoDecoder decoder = decoders.get(i); 17716dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood if (decoder == VideoDecoder.VIDEO_DECODER_WMV) { 17816dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood return true; 17916dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 18016dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 18116dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood return false; 18216dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 18316dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static { 1855367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg", MtpConstants.FORMAT_MP3); 1862fe37b7005776c50fbb3a3661f5823fb6c890b81Mathias Franzén addFileType("MPGA", FILE_TYPE_MP3, "audio/mpeg", MtpConstants.FORMAT_MP3); 1875367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("M4A", FILE_TYPE_M4A, "audio/mp4", MtpConstants.FORMAT_MPEG); 1885367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav", MtpConstants.FORMAT_WAV); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("AMR", FILE_TYPE_AMR, "audio/amr"); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("AWB", FILE_TYPE_AWB, "audio/amr-wb"); 19168db99ef761456ffaa0c4b918ce75dfc0892784aJames Dong if (isWMAEnabled()) { 1925367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma", MtpConstants.FORMAT_WMA); 1930ddbc35dc4974fbe18a4191e579b1eda5a7ef2b1Marco Nelissen } 194dc912ed9c6f1a0812bd07e5a24600c5b438a54bbMarco Nelissen addFileType("OGG", FILE_TYPE_OGG, "audio/ogg", MtpConstants.FORMAT_OGG); 1955367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("OGG", FILE_TYPE_OGG, "application/ogg", MtpConstants.FORMAT_OGG); 1965367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("OGA", FILE_TYPE_OGG, "application/ogg", MtpConstants.FORMAT_OGG); 1975367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("AAC", FILE_TYPE_AAC, "audio/aac", MtpConstants.FORMAT_AAC); 198f9cf277cda5d7cdf8383331892cca0734a850e19Gloria Wang addFileType("AAC", FILE_TYPE_AAC, "audio/aac-adts", MtpConstants.FORMAT_AAC); 199072f5247ef893e683728263a540bb93daafda376Andreas Huber addFileType("MKA", FILE_TYPE_MKA, "audio/x-matroska"); 2005a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("MID", FILE_TYPE_MID, "audio/midi"); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("MIDI", FILE_TYPE_MID, "audio/midi"); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("XMF", FILE_TYPE_MID, "audio/midi"); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("RTTTL", FILE_TYPE_MID, "audio/midi"); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("SMF", FILE_TYPE_SMF, "audio/sp-midi"); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("IMY", FILE_TYPE_IMY, "audio/imelody"); 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("RTX", FILE_TYPE_MID, "audio/midi"); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addFileType("OTA", FILE_TYPE_MID, "audio/midi"); 209eecadb9a84f357fb224592cc77603ff3e7c28f08Andreas Huber addFileType("MXMF", FILE_TYPE_MID, "audio/midi"); 2105a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2115367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("MPEG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG); 21228d1a4aaf3c338f42d7b71d4653be707f06948a6Mike Lockwood addFileType("MPG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG); 2135367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("MP4", FILE_TYPE_MP4, "video/mp4", MtpConstants.FORMAT_MPEG); 2145367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("M4V", FILE_TYPE_M4V, "video/mp4", MtpConstants.FORMAT_MPEG); 215c9cb80e9e66c334eb82bf94e20a93c5b02719733Bryan Mawhinney addFileType("MOV", FILE_TYPE_QT, "video/quicktime", MtpConstants.FORMAT_MPEG); 216c9cb80e9e66c334eb82bf94e20a93c5b02719733Bryan Mawhinney 2175367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER); 2185367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER); 2195367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER); 2205367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER); 221072f5247ef893e683728263a540bb93daafda376Andreas Huber addFileType("MKV", FILE_TYPE_MKV, "video/x-matroska"); 222ff535914825f63999648030a02f57767593462f0Mike Lockwood addFileType("WEBM", FILE_TYPE_WEBM, "video/webm"); 223a557b24ac4dd568d86b08753f7c0361d04f80d46Andreas Huber addFileType("TS", FILE_TYPE_MP2TS, "video/mp2ts"); 224cabb7da7125a80c55233bd23959327424e9646ccAndreas Huber addFileType("AVI", FILE_TYPE_AVI, "video/avi"); 225a557b24ac4dd568d86b08753f7c0361d04f80d46Andreas Huber 22616dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood if (isWMVEnabled()) { 22716dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv", MtpConstants.FORMAT_WMV); 22816dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood addFileType("ASF", FILE_TYPE_ASF, "video/x-ms-asf"); 22916dc3073a2f06a77d9873e536f633a4adf575fceMike Lockwood } 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2315367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg", MtpConstants.FORMAT_EXIF_JPEG); 2325367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg", MtpConstants.FORMAT_EXIF_JPEG); 2335367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("GIF", FILE_TYPE_GIF, "image/gif", MtpConstants.FORMAT_GIF); 2345367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("PNG", FILE_TYPE_PNG, "image/png", MtpConstants.FORMAT_PNG); 2355367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp", MtpConstants.FORMAT_BMP); 2368409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp", MtpConstants.FORMAT_DEFINED); 2378409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("WEBP", FILE_TYPE_WEBP, "image/webp", MtpConstants.FORMAT_DEFINED); 2385a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2395a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung addFileType("DNG", FILE_TYPE_DNG, "image/x-adobe-dng", MtpConstants.FORMAT_DNG); 2408409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("CR2", FILE_TYPE_CR2, "image/x-canon-cr2", MtpConstants.FORMAT_TIFF); 2418409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("NEF", FILE_TYPE_NEF, "image/x-nikon-nef", MtpConstants.FORMAT_TIFF_EP); 2428409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("NRW", FILE_TYPE_NRW, "image/x-nikon-nrw", MtpConstants.FORMAT_TIFF); 2438409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("ARW", FILE_TYPE_ARW, "image/x-sony-arw", MtpConstants.FORMAT_TIFF); 2448409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("RW2", FILE_TYPE_RW2, "image/x-panasonic-rw2", MtpConstants.FORMAT_TIFF); 2458409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("ORF", FILE_TYPE_ORF, "image/x-olympus-orf", MtpConstants.FORMAT_TIFF); 2468409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("RAF", FILE_TYPE_RAF, "image/x-fuji-raf", MtpConstants.FORMAT_DEFINED); 2478409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("PEF", FILE_TYPE_PEF, "image/x-pentax-pef", MtpConstants.FORMAT_TIFF); 2488409c0691fb128fef6244305977342776bddf919Jaesung Chung addFileType("SRW", FILE_TYPE_SRW, "image/x-samsung-srw", MtpConstants.FORMAT_TIFF); 2495a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2505367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); 251b5c6afc208bd70eba386dbb2c0fb29b34e44e4d4Andreas Huber addFileType("M3U", FILE_TYPE_M3U, "application/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); 2525367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST); 2535367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", MtpConstants.FORMAT_WPL_PLAYLIST); 2545dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber addFileType("M3U8", FILE_TYPE_HTTPLIVE, "application/vnd.apple.mpegurl"); 2555dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber addFileType("M3U8", FILE_TYPE_HTTPLIVE, "audio/mpegurl"); 2565dffd0e3af502acdc2e45425139ef8081fa4f0a8Andreas Huber addFileType("M3U8", FILE_TYPE_HTTPLIVE, "audio/x-mpegurl"); 257fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood 2585d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang addFileType("FL", FILE_TYPE_FL, "application/x-android-drm-fl"); 2595d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang 260fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("TXT", FILE_TYPE_TEXT, "text/plain", MtpConstants.FORMAT_TEXT); 261fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("HTM", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); 262fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("HTML", FILE_TYPE_HTML, "text/html", MtpConstants.FORMAT_HTML); 263fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("PDF", FILE_TYPE_PDF, "application/pdf"); 264fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("DOC", FILE_TYPE_MS_WORD, "application/msword", MtpConstants.FORMAT_MS_WORD_DOCUMENT); 265fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("XLS", FILE_TYPE_MS_EXCEL, "application/vnd.ms-excel", MtpConstants.FORMAT_MS_EXCEL_SPREADSHEET); 266fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("PPT", FILE_TYPE_MS_POWERPOINT, "application/mspowerpoint", MtpConstants.FORMAT_MS_POWERPOINT_PRESENTATION); 267fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("FLAC", FILE_TYPE_FLAC, "audio/flac", MtpConstants.FORMAT_FLAC); 268fde2ca180ea63ebd314770ec55b97e0a3c5a0788Mike Lockwood addFileType("ZIP", FILE_TYPE_ZIP, "application/zip"); 269bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber addFileType("MPG", FILE_TYPE_MP2PS, "video/mp2p"); 270bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber addFileType("MPEG", FILE_TYPE_MP2PS, "video/mp2p"); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 272c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isAudioFileType(int fileType) { 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ((fileType >= FIRST_AUDIO_FILE_TYPE && 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fileType <= LAST_AUDIO_FILE_TYPE) || 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (fileType >= FIRST_MIDI_FILE_TYPE && 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fileType <= LAST_MIDI_FILE_TYPE)); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 279c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isVideoFileType(int fileType) { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (fileType >= FIRST_VIDEO_FILE_TYPE && 282bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber fileType <= LAST_VIDEO_FILE_TYPE) 283bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber || (fileType >= FIRST_VIDEO_FILE_TYPE2 && 284bc554956128d69d8d2e60365fb6cffe6facf659bAndreas Huber fileType <= LAST_VIDEO_FILE_TYPE2); 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 286c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isImageFileType(int fileType) { 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (fileType >= FIRST_IMAGE_FILE_TYPE && 2895a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung fileType <= LAST_IMAGE_FILE_TYPE) 2905a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung || (fileType >= FIRST_RAW_IMAGE_FILE_TYPE && 2915a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung fileType <= LAST_RAW_IMAGE_FILE_TYPE); 2925a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung } 2935a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung 2945a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung public static boolean isRawImageFileType(int fileType) { 2955a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung return (fileType >= FIRST_RAW_IMAGE_FILE_TYPE && 2965a8b9627c7fdacc94791fb3024386739f8cf9a56Jaesung Chung fileType <= LAST_RAW_IMAGE_FILE_TYPE); 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 298c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static boolean isPlayListFileType(int fileType) { 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (fileType >= FIRST_PLAYLIST_FILE_TYPE && 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fileType <= LAST_PLAYLIST_FILE_TYPE); 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 303c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 3045d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang public static boolean isDrmFileType(int fileType) { 3055d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang return (fileType >= FIRST_DRM_FILE_TYPE && 3065d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang fileType <= LAST_DRM_FILE_TYPE); 3075d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang } 3085d143ad4a8f8c90f44e185a494ff3ff638e6c103Gloria Wang 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static MediaFileType getFileType(String path) { 310dcb1a58cf9d66b36de825dae2fa0cb0529e60680Elliott Hughes int lastDot = path.lastIndexOf('.'); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (lastDot < 0) 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 313dcb1a58cf9d66b36de825dae2fa0cb0529e60680Elliott Hughes return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase(Locale.ROOT)); 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 315c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 31645b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori public static boolean isMimeTypeMedia(String mimeType) { 31745b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori int fileType = getFileTypeForMimeType(mimeType); 31845b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori return isAudioFileType(fileType) || isVideoFileType(fileType) 31945b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori || isImageFileType(fileType) || isPlayListFileType(fileType); 32045b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori } 32145b43622e329c25c6070a3f2f2fc2ba5a14533bbVasu Nori 322c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood // generates a title based on file name 323c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood public static String getFileTitle(String path) { 324c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood // extract file name after last slash 325c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood int lastSlash = path.lastIndexOf('/'); 326c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood if (lastSlash >= 0) { 327c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood lastSlash++; 328c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood if (lastSlash < path.length()) { 329c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood path = path.substring(lastSlash); 330c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 331c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 332c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood // truncate the file extension (if any) 333c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood int lastDot = path.lastIndexOf('.'); 334c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood if (lastDot > 0) { 335c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood path = path.substring(0, lastDot); 336c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 337c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood return path; 338c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 339c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static int getFileTypeForMimeType(String mimeType) { 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Integer value = sMimeTypeMap.get(mimeType); 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (value == null ? 0 : value.intValue()); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 345c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood public static String getMimeTypeForFile(String path) { 346c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood MediaFileType mediaFileType = getFileType(path); 347c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood return (mediaFileType == null ? null : mediaFileType.mimeType); 348c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood } 349c37255d5d0fd9e0ec02b0d7cb5c4b235e200d367Mike Lockwood 350d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood public static int getFormatCode(String fileName, String mimeType) { 351d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (mimeType != null) { 352d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood Integer value = sMimeTypeToFormatMap.get(mimeType); 353d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (value != null) { 354d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood return value.intValue(); 355d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 356d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 357d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood int lastDot = fileName.lastIndexOf('.'); 358d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (lastDot > 0) { 359dcb1a58cf9d66b36de825dae2fa0cb0529e60680Elliott Hughes String extension = fileName.substring(lastDot + 1).toUpperCase(Locale.ROOT); 360d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood Integer value = sFileTypeToFormatMap.get(extension); 361d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood if (value != null) { 362d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood return value.intValue(); 363d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 364d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 3655367ab6aab2a61aaf534b18576dcdd0bca1b9681Mike Lockwood return MtpConstants.FORMAT_UNDEFINED; 366d21eac9c70940f2c73da5faaf401dbbc44b70a15Mike Lockwood } 367d815f79766984fce499e147ecbacc01914683f74Mike Lockwood 368d815f79766984fce499e147ecbacc01914683f74Mike Lockwood public static String getMimeTypeForFormatCode(int formatCode) { 369d815f79766984fce499e147ecbacc01914683f74Mike Lockwood return sFormatToMimeTypeMap.get(formatCode); 370d815f79766984fce499e147ecbacc01914683f74Mike Lockwood } 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 372