Android 重复缩略图问题

标签 android android-cursor mediastore video-thumbnails

我正在创建一个自定义图像和视频库,就像 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 年前有人问过这个问题)。

有没有人遇到过这个问题,我已经看过很多例子并添加更多我正在异步任务中加载光标所以填充缩略图应该不是我猜的 Adroid OS 的问题。这个问题有可用的解决方案吗?它相当令人沮丧。

最佳答案

我不确定您是否已经找到问题的解决方案,但我遇到了类似的问题。我的应用程序正在返回未指向任何内容的缩略图 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);
}

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

关于Android 重复缩略图问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339762/

相关文章:

java - ParseUser.getDate ("createdAt") 始终为 null

android - 每个列表项打开不同的 Activity

用于大型数据集的 Android ListView

java - 如何在设置铃声之前清除 Mediastore

android - 获取外部卡上的所有 MP3 文件

javascript - 如何退出全屏 Web 应用程序

java - 添加大量 TextView

android - 在游标 android 中写入

android - 在 Chrome 和其他浏览器中获取上次访问的 URL

java - 更新 android mediastore 中的专辑封面?