Android判斷檔案類型(視頻、音頻、圖片等)

來源:互聯網
上載者:User

MediaFile.java

package com.jaycee.vplayer.util;import java.util.HashMap;import java.util.Iterator;/** * 判斷檔案類型 * MediaScanner helper class. */public class MediaFile {    // comma separated list of all file extensions supported by the media scanner    public static String sFileExtensions;    // Audio file types    public static final int FILE_TYPE_MP3     = 1;    public static final int FILE_TYPE_M4A     = 2;    public static final int FILE_TYPE_WAV     = 3;    public static final int FILE_TYPE_AMR     = 4;    public static final int FILE_TYPE_AWB     = 5;    public static final int FILE_TYPE_WMA     = 6;    public static final int FILE_TYPE_OGG     = 7;    private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3;    private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_OGG;    // MIDI file types    public static final int FILE_TYPE_MID     = 11;    public static final int FILE_TYPE_SMF     = 12;    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;    public static final int FILE_TYPE_3GPP    = 23;    public static final int FILE_TYPE_3GPP2   = 24;    public static final int FILE_TYPE_WMV     = 25;    private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4;    private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_WMV;        // Image file types    public static final int FILE_TYPE_JPEG    = 31;    public static final int FILE_TYPE_GIF     = 32;    public static final int FILE_TYPE_PNG     = 33;    public static final int FILE_TYPE_BMP     = 34;    public static final int FILE_TYPE_WBMP    = 35;    private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG;    private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WBMP;       // Playlist file types    public static final int FILE_TYPE_M3U     = 41;    public static final int FILE_TYPE_PLS     = 42;    public static final int FILE_TYPE_WPL     = 43;    private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U;    private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_WPL;        //靜態內部類    static class MediaFileType {            int fileType;        String mimeType;                MediaFileType(int fileType, String mimeType) {            this.fileType = fileType;            this.mimeType = mimeType;        }    }        private static HashMap<String, MediaFileType> sFileTypeMap             = new HashMap<String, MediaFileType>();    private static HashMap<String, Integer> sMimeTypeMap             = new HashMap<String, Integer>();                static void addFileType(String extension, int fileType, String mimeType) {        sFileTypeMap.put(extension, new MediaFileType(fileType, mimeType));        sMimeTypeMap.put(mimeType, new Integer(fileType));    }    static {        addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg");        addFileType("M4A", FILE_TYPE_M4A, "audio/mp4");        addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav");        addFileType("AMR", FILE_TYPE_AMR, "audio/amr");        addFileType("AWB", FILE_TYPE_AWB, "audio/amr-wb");        addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma");            addFileType("OGG", FILE_TYPE_OGG, "application/ogg");             addFileType("MID", FILE_TYPE_MID, "audio/midi");        addFileType("XMF", FILE_TYPE_MID, "audio/midi");        addFileType("RTTTL", FILE_TYPE_MID, "audio/midi");        addFileType("SMF", FILE_TYPE_SMF, "audio/sp-midi");        addFileType("IMY", FILE_TYPE_IMY, "audio/imelody");                addFileType("MP4", FILE_TYPE_MP4, "video/mp4");        addFileType("M4V", FILE_TYPE_M4V, "video/mp4");        addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp");        addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp");        addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2");        addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2");        addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv");        addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg");        addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg");        addFileType("GIF", FILE_TYPE_GIF, "image/gif");        addFileType("PNG", FILE_TYPE_PNG, "image/png");        addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp");        addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp");         addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl");        addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls");        addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl");        // compute file extensions list for native Media Scanner        StringBuilder builder = new StringBuilder();        Iterator<String> iterator = sFileTypeMap.keySet().iterator();                while (iterator.hasNext()) {            if (builder.length() > 0) {                builder.append(',');            }            builder.append(iterator.next());        }         sFileExtensions = builder.toString();    }        public static final String UNKNOWN_STRING = "<unknown>";        public static boolean isAudioFileType(int fileType) {        return ((fileType >= FIRST_AUDIO_FILE_TYPE &&                fileType <= LAST_AUDIO_FILE_TYPE) ||                (fileType >= FIRST_MIDI_FILE_TYPE &&                fileType <= LAST_MIDI_FILE_TYPE));    }        public static boolean isVideoFileType(int fileType) {        return (fileType >= FIRST_VIDEO_FILE_TYPE &&                fileType <= LAST_VIDEO_FILE_TYPE);    }        public static boolean isImageFileType(int fileType) {        return (fileType >= FIRST_IMAGE_FILE_TYPE &&                fileType <= LAST_IMAGE_FILE_TYPE);    }        public static boolean isPlayListFileType(int fileType) {        return (fileType >= FIRST_PLAYLIST_FILE_TYPE &&                fileType <= LAST_PLAYLIST_FILE_TYPE);    }        public static MediaFileType getFileType(String path) {        int lastDot = path.lastIndexOf(".");        if (lastDot < 0)            return null;        return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase());    }    //根據視頻檔案路徑判斷檔案類型    public static boolean isVideoFileType(String path) {  //自己增加        MediaFileType type = getFileType(path);        if(null != type) {            return isVideoFileType(type.fileType);        }        return false;    }    //根據音頻檔案路徑判斷檔案類型    public static boolean isAudioFileType(String path) {  //自己增加        MediaFileType type = getFileType(path);        if(null != type) {            return isAudioFileType(type.fileType);        }        return false;    }    //根據mime類型查看檔案類型    public static int getFileTypeForMimeType(String mimeType) {        Integer value = sMimeTypeMap.get(mimeType);        return (value == null ? 0 : value.intValue());    }}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.