第二十篇 Android获取本机图片、音频、视频、文档以及本地文件夹列表
2018-01-02 09:40
1016 查看
android获取本机图片文件夹,即相册,以及相册下的所有图片的方法,贴出工具类,方便后续使用,效果图就类似百度网盘上传图片的 选择相册界面和点击某个相册选择图片的界面.
FileManager类:
ImageFolder类:
获取音频、视频、文档等,参考:
http://blog.csdn.net/chay_chan/article/details/76984665
获取本地文件夹列表,参考:
http://blog.csdn.net/junzia/article/details/41649063
相关知识链接: 媒体库
http://blog.csdn.net/dlwh_123/article/details/23337913
1.Images表:主要存储images信息。
2.Thumbnails表:这个表和images表是有直接关系的。主要存储图片的缩略图,Android为每一张保存进系统的图片文件都会自动生成一张缩略图文件。
3.Video表:主要存储视频信息了。和images表类似。
4.Videothumbnails表:存储视频的缩略图信息。这个和thumbnails表类似。
5.Audio表:音频信息比视频信息和图片信息要稍微复杂一些,主要是存储了一些专辑(album)、歌手(artists)信息,而专辑和歌手信息是单独的表格存储的,audio其实是一个视图,真正的音频数据信息存储在audio_meta表格中。
6.Albums表:主要存储专辑信息。
7.Artists表:主要存储歌手信息。
8.audio_playlists视图:媒体库的播放列表。
9.audio_media视图:真正的音频数据存储在这里。
补充:如果不想搞那么复杂,可以直接intent调用系统文件管理器打开指定路径目录。
FileManager类:
public class FileManager { private static FileManager mInstance; private static Context mContext; private static ContentResolver mContentResolver; public static FileManager getInstance(Context context) { if (mInstance == null) { synchronized (FileManager.class) { if (mInstance == null) { mInstance = new FileManager(); mContext = context; mContentResolver = context.getContentResolver(); } } } return mInstance; } /** * 得到图片文件夹集合 */ public List<ImgFolder> getImageFolders() { List<ImgFolder> folders = new ArrayList<ImgFolder>(); // 扫描图片 Cursor c = null; try { c = mContentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media.MIME_TYPE + "= ? or " + MediaStore.Images.Media.MIME_TYPE + "= ?", new String[]{"image/jpeg", "image/png"}, "date_modified desc"); List<String> mDirs = new ArrayList<String>();//用于保存已经添加过的文件夹目录 while (c.moveToNext()) { String path = c.getString(c.getColumnIndex(MediaStore.Images.Media.DATA));// 路径 File parentFile = new File(path).getParentFile(); if (parentFile == null) continue; String dir = parentFile.getAbsolutePath(); if (mDirs.contains(dir)) {//如果已经添加过 //追加三张图片 for (ImgFolder folder : folders) { if (folder.getDir().equals(dir)) {//取出当前文件夹 String[] imgPaths = folder.getPreFourImgPath().split(","); if (imgPaths.length >= 4) { break; } else { folder.setPreFourImgPath(folder.getPreFourImgPath() + path + ","); } } } continue; } mDirs.add(dir);//添加到保存目录的集合中 ImgFolder folderBean = new ImgFolder(); folderBean.setDir(dir); folderBean.setPreFourImgPath(path + ","); if (parentFile.list() == null) continue; int count = parentFile.list(new FilenameFilter() { @Override public boolean accept(File dir, String filename) { if (filename.endsWith(".jpeg") || filename.endsWith(".jpg") || filename.endsWith(".png")) { return true; } return false; 4000 } }).length; folderBean.setCount(count); folders.add(folderBean); } } catch (Exception e) { e.printStackTrace(); } finally { if (c != null) { c.close(); } } return folders; } /** * 通过图片文件夹的路径获取该目录下的图片 */ public List<String> getImgListByDir(String dir) { ArrayList<String> imgPaths = new ArrayList<>(); File directory = new File(dir); if (directory == null || !directory.exists()) { return imgPaths; } File[] files = directory.listFiles(); //对文件进行排序 Arrays.sort(files, new FileComparator()); for (File file : files) { String path = file.getAbsolutePath(); if (FileManager.isPicFile(path)) { imgPaths.add(path); } } return imgPaths; } /** * 是否是图片文件 */ public static boolean isPicFile(String path) { path = path.toLowerCase(); if (path.endsWith(".jpg") || path.endsWith(".jpeg") || path.endsWith(".png")) { return true; } return false; } class FileComparator implements Comparator<File> { @Override public int compare(File lhs, File rhs) { if (lhs.lastModified() < rhs.lastModified()) { return 1; } else { return -1; } } } }
ImageFolder类:
public class ImgFolder { /**当前文件夹的路径*/ private String dir; /**前四张图片的路径,用逗号分隔*/ private String preFourImgPath; /**文件夹名*/ private String name; /**文件夹中图片的数量*/ private int count; public String getDir() { return dir; } public void setDir(String dir) { this.dir = dir; int lastIndex = dir.lastIndexOf("/"); this.name = dir.substring(lastIndex + 1); } public String getPreFourImgPath() { return preFourImgPath; } public void setPreFourImgPath(String preFourImgPath) { this.preFourImgPath = preFourImgPath; } public String getName() { return name; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public void setName(String name) { this.name = name; } public ImgFolder() { } public ImgFolder(String dir, String preFourImgPath, String name, int count) { this.dir = dir; this.preFourImgPath = preFourImgPath; this.name = name; this.count = count; } @Override public String toString() { return "ImgFolder{" + "dir='" + dir + '\'' + ", preFourImgPath='" + preFourImgPath + '\'' + ", name='" + name + '\'' + ", count=" + count + '}'; } }
获取音频、视频、文档等,参考:
http://blog.csdn.net/chay_chan/article/details/76984665
获取本地文件夹列表,参考:
http://blog.csdn.net/junzia/article/details/41649063
相关知识链接: 媒体库
http://blog.csdn.net/dlwh_123/article/details/23337913
1.Images表:主要存储images信息。
2.Thumbnails表:这个表和images表是有直接关系的。主要存储图片的缩略图,Android为每一张保存进系统的图片文件都会自动生成一张缩略图文件。
3.Video表:主要存储视频信息了。和images表类似。
4.Videothumbnails表:存储视频的缩略图信息。这个和thumbnails表类似。
5.Audio表:音频信息比视频信息和图片信息要稍微复杂一些,主要是存储了一些专辑(album)、歌手(artists)信息,而专辑和歌手信息是单独的表格存储的,audio其实是一个视图,真正的音频数据信息存储在audio_meta表格中。
6.Albums表:主要存储专辑信息。
7.Artists表:主要存储歌手信息。
8.audio_playlists视图:媒体库的播放列表。
9.audio_media视图:真正的音频数据存储在这里。
补充:如果不想搞那么复杂,可以直接intent调用系统文件管理器打开指定路径目录。
相关文章推荐
- Android中本地图片资源以及视频录音资源的获取
- android 图片、音频、视频获取以及多媒体数据库学习
- Android获取本机各种类型文件列表(音乐、视频、图片、文档等)
- android获取多媒体库的视频、音频、图片
- android红米等关于读取本地文件夹图片获取路径的问题的解决
- Android ImageUtils 图片工具类,包括:小米从相册调图像空指针,三星旋转照片,压缩图片,保存Bitmap到本地,获取本地视频的缩略图,毛化玻璃效果,代码以后会更新
- android 获取本地全部图片列表的实现及源码下载(一)
- Android:获取系统视频、音频、图片
- 如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片
- android 获取本地全部图片列表的实现及源码下载(一)
- C# FileUpload上传视频、图片、文档,分别保存在不同的文件夹中以及下载文件的方法
- Android关于本地多媒体(图片、视频、音频)Media的选择总结
- android红米等关于读取本地文件夹图片获取路径的问题的解决
- Android编程实现获取多媒体库视频、音频、图片的方法
- android获取音频、视频、图片信息
- android 获取本地全部图片列表的实现及源码下载(二)
- Android开发之多媒体文件获取工具类实例【音频,视频,图片等】
- android红米等关于读取本地文件夹图片获取路径的问题的解决
- 图片,音频,视频文件的上传 以及图片缩略图的制作,音频文件时长的获取以及 视频文件缩略图的获取
- android 获取本地全部图片列表的实现及源码下载(二)