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());    }}

更多相关文章

  1. android得到系统时间如何判断是白天还是晚上
  2. network: Android(安卓)网络判断(wifi、3G与其他)
  3. android判断手机有没有安装微博
  4. android 判断是否连接钢琴和检测钢琴是哪个按键
  5. android判断当前设备的支持哪些Feature
  6. Android及Robotium学习总结【环境变量,真机调试及根据id模拟按键
  7. SQLite在android 的一些用法与Cursor的体会
  8. android 根据res文件夹下(如res/raw)文件名获取其id
  9. 多种方式判断PC端,IOS端,移动端

随机推荐

  1. android surfaceflinger研究----Surface
  2. android国际化
  3. 《第一行代码--Android》读书笔记之多线
  4. Android开机启动Activity或者Service方法
  5. Android中JNI编程的那些事儿 【转】
  6. Android(安卓)四大组件 简介
  7. android中c/c++程序的调试(eclipse)
  8. Android中的多线程之handler
  9. Android中native进程内存泄露的调试技巧
  10. 平安科技移动开发二队技术周报(第三十三期