MediaStore:获取图像数据,图标和文件夹 [英] MediaStore: get image data, thumbnail and folder

查看:757
本文介绍了MediaStore:获取图像数据,图标和文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个列表。让我们把他们AlbumsList和PicturesList。

I have two lists. Let's call them AlbumsList and PicturesList.

  • 在第一个显示的相册封面(从它的图像之一),它的名字和图片的数量吧。
  • 第二个显示了所有包含在所选择的专辑图像。

我已经做到了使用文件类,但它的工作速度太慢,发现所有的图像设备上时,我只需要那些库。 我读过有关MediaStore内容提供商,但从来没有使用过它。所以,我有2个问题:

I've already done it using File class but it works too slow and finds all of the images on device when I need only those from gallery. I've read about MediaStore content provider but have never used it. So I have 2 questions:

  1. 如何找到相册(含图片库文件夹),缩略图和用MediaStore类在他们的照片的数量?我认为这是类似于如何找到文件路径和缩略图所有画廊图像?
  2. 如何获得文件路径和缩略图全部使用MediaStore类特定文件夹中的图片?

编辑: 这似乎是MediaStore.Images.Media.DATA列包含文件路径,这样我就可以拿到相册文件夹中。 MediaStore.Images.Media.Display_NAME看起来像一个文件名,但我不知道它的总是如此。 我能否获得缩略图数据列它除了这些列,而不进行第二次查询?

It seems like MediaStore.Images.Media.DATA column contains the filepath, so I can get the album folder. MediaStore.Images.Media.Display_NAME looks like a filename but I'm not sure that it's always true. Can I get thumbnail data column it addition to these columns without making second query?

推荐答案

下面的code我已经写了:

Here the code I've written:

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

它使用我的专辑类和previously宣布VAR mAlbumsList ,但我认为这是不够清楚明白怎么运行的。也许这会帮助别人。

It uses my ALbum class and previously declared var mAlbumsList but I think it's clear enough to understand how it works. Maybe it'll help someone.

这篇关于MediaStore:获取图像数据,图标和文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆