android – MediaStore:获取图像数据,缩略图和文件夹

我有两个清单.我们称它们为AlbumsList和PicturesList.

>第一个显示相册封面(其中一个图像),它的名称图片数量.
>第二个显示所选专辑中包含的所有图像.

我已经使用File类完成了它,但它工作得太慢,当我只需要来自图库的那些时,它会在设备上找到所有图像.
我读过有关MediaStore内容提供商但从未使用过它.所以我有两个问题:

>如何使用MediaStore类找到“相册”(包含图片的图库中的文件夹),缩略图图片中的图片数量?我认为它类似于“如何为图库中的所有图像查找文件路径和缩略图?”
>如何使用MediaStore类获取特定文件夹中所有图像的文件路径和缩略图

编辑:
看起来MediaStore.Images.Media.DATA列包含文件路径,所以我可以获取相册文件夹. MediaStore.Images.Media.display_NAME看起来像文件名,但我不确定它是否总是如此.
我可以在不进行第二次查询的情况下将缩略图数据列添加到这些列中吗?

解决方法

这里是我写的代码
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    String[] projection = { MediaStore.Images.Media._ID,MediaStore.Images.Media.BUCKET_ID,MediaStore.Images.Media.BUCKET_disPLAY_NAME };

    Cursor cursor = getContentResolver().query(uri,projection,null,null);

    ArrayList<String> ids = new ArrayList<String>();
    mAlbumsList.clear();
    if (cursor != null) {
        while (cursor.movetoNext()) {
            Album album = new Album();

            int columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID);
            album.id = cursor.getString(columnIndex);

            if (!ids.contains(album.id)) {
                columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_disPLAY_NAME);
                album.name = cursor.getString(columnIndex);

                columnIndex = cursor.getColumnIndex(MediaStore.Images.Media._ID);
                album.coverID = cursor.getLong(columnIndex);

                mAlbumsList.add(album);
                ids.add(album.id);
            } else {
                mAlbumsList.get(ids.indexOf(album.id)).count++;
            }
        }
        cursor.close();

它使用我的ALbum类和之前声明的var mAlbumsList,但我认为很清楚它是如何工作的.也许它会帮助某人.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...