【问题标题】:Android duplicate thumbnail issueAndroid重复缩略图问题
【发布时间】:2014-08-11 22:46:34
【问题描述】:

我正在创建一个自定义图像和视频库,就像 Whatsapp 必须允许用户选择多个图像/视频一样,到目前为止,我正在填充并在 gridview 上显示缩略图。但结果是,在某些设备上,有时会显示图像重复,在某些情况下,它们没有。同样的情况也发生在视频库中。

我正在从

查询图像的 ID
 MediaStore.images 

并使用

获取缩略图
MediaStore.images.thumbnails.getThumbnail 

从获得的 ID

下面是我的代码

            final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
            final String orderBy = MediaStore.Images.Media.DATE_ADDED;
            imageCursor = activity.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,null, orderBy+" DESC");
            int image_column_index = imageCursor.getColumnIndex(MediaStore.Images.Media._ID);
            int count = imageCursor.getCount();
            thumbnails = new Bitmap[count];
            arrPath = new String[count];
            Log.d("count ", ""+count);
            int i=0;


            for ( i= 0; i <count; i++) 
            {
                imageCursor.moveToPosition(i);
                int id = imageCursor.getInt(image_column_index);
                int dataColumnIndex = imageCursor.getColumnIndex(MediaStore.Images.Media._ID);
                thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(), id,MediaStore.Images.Thumbnails.MICRO_KIND, null);
                arrPath[i]= imageCursor.getString(dataColumnIndex);
            }

来自android documentation getThumbnail 如果缩略图不可用,应该创建它。

产生相同问题的一个例子是MediaStore.Images.Thumbnails.getThumbnail returns wrong thumbnail instead of NULL,但那个人还没有找到解决方案(这个问题是在 2 年前提出的)。

有没有人遇到过这个问题,我已经经历了很多例子,并添加了更多我在 asynctask 中加载光标,所以填充缩略图对于 Adroid OS 应该不是问题,我猜。有解决这个问题的方法吗?令人沮丧。

【问题讨论】:

    标签: android android-cursor mediastore video-thumbnails


    【解决方案1】:

    我不确定您是否找到了问题的解决方案,但我遇到了类似的问题。我的应用程序正在返回没有指向任何内容的缩略图 uri。但是调用 ThumbnailUtils.createVideoThumbnail() 将修复内容解析器中的引用。我最终将以下内容放入我的应用程序中:

    Bitmap bitmap = Thumbnails.getThumbnail(mActivity.getContentResolver(), videoFile.mId,
                                            Thumbnails.MINI_KIND, null);
    if (bitmap == null) {
       ThumbnailUtils.createVideoThumbnail(videoFile.mAbsolutePath, Thumbnails.MINI_KIND);
    }
    

    然后我告诉我的适配器更新受影响的元素。

    【讨论】:

      猜你喜欢
      • 2011-02-23
      • 1970-01-01
      • 2011-06-25
      • 2011-07-04
      • 1970-01-01
      • 2019-04-10
      • 2011-10-20
      • 1970-01-01
      相关资源
      最近更新 更多