Android判断文件类型(视频、音频、图片等)
2013-04-05 17:35
1131 查看
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()); } }
相关文章推荐
- Android判断文件类型(视频、音频、图片等)
- android判断文件类型是否为音频文件
- android扫描sdcard中的音频、视频、图片等文件的方法
- Android开发之多媒体文件获取工具类实例【音频,视频,图片等】
- Android 媒体库图片,音频,视频,文件的查询
- Android获取文件类型是图片还是视频
- 常用视频、音频、图片、字幕文件类型:
- 如何检测android上的多媒体文件属于音频、视频还是图片?
- android 图片选择,可选择图片,视频,音频,文件,方便扩展
- Android获取本机各种类型文件列表(音乐、视频、图片、文档等)
- Android系统使用MediaFile类判断音频文件类型
- js判断文件类型,图片、视频等格式
- Android中使用又拍云存储来上传文件(包括图片、音频和视频等)
- 如何检测android上的多媒体文件属于音频、视频还是图片
- android上传图片、视频、文件,服务端使用wcf接收
- Android: MediaCodec视频文件硬件解码,高效率得到YUV格式帧,快速保存JPEG图片(不使用OpenGL)
- 在作图片上传时判断文件是否是较长片类型 检测到是否是改后缀名图片(二)
- android通过Intent调用手机图片,音频,视频录音拍照等代码
- 浅谈Android中微信的文本,音频,视频,链接,表情,图片分享接口开发详解
- android开发视频播放器------Vitamio第一个例子 播放url类型文件