使用ContentProvider获取缩略图图像

时间:2015-10-26 06:46:33

标签: android android-fragments android-contentprovider mediastore

我尝试获取缩略图并将其放入我的布局中。我有onCreateView方法的片段类。

HTTP/1.0 200 OK
Cache-Control: no-cache
Content-Type:  application/json
Date:          Mon, 26 Oct 2015 06:37:40 GMT

{"status":1}
所以在这里我得到缩略图。我在清单文件中设置了权限:

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
      
        cr = getActivity().getContentResolver();
        image = new ImageView(getActivity().getApplicationContext());
        String[] mProjection = {
                MediaStore.Images.Thumbnails._ID
        };
        thumbnails = cr.query(
                MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                mProjection,
                null,
                null,
                null);

        if (thumbnails==null){
            Log.d("yerchik/fragment", "error");
        }else if (thumbnails.getCount() <1){
            Log.d("yerchik/fragment", "nothing returned");
        }else {
            Log.d("yerchik/fragment", "thumbnails returned");
            thumbnails.moveToFirst();
            int index = thumbnails.getColumnIndex(MediaStore.Images.Thumbnails._ID);
            Log.d("yerchik/fragment", "index: " + index);
            if (thumbnails.moveToNext()){
                Random r = new Random();
                int rand = r.nextInt(thumbnails.getCount());
                thumbnails.moveToPosition(rand);
                bitmap = MediaStore.Images.Thumbnails.getThumbnail(
                        cr,
                        thumbnails.getInt(index),
                        MediaStore.Images.Thumbnails.MICRO_KIND,
                        null);
                image.setImageBitmap(bitmap);
            }
        }
        return image;
    }

在我的主要活动中,我把这个片段如下:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

在我的日志中,我有:

缩略图返回

所以我有一些缩略图,但没有出现。

有趣的是,如果我为片段添加布局并使用一些src图像声明我的ImageView并注释掉image.setImageBitmap(位图)行,我将获取我的样本图像。在我删除评论后,没有任何内容出现,因此我的代码似乎在绘制内容,因为从布局添加的图像会消失,但不会显示缩略图。

1 个答案:

答案 0 :(得分:0)

MediaStore.Images.Thumbnails.getThumbnail()已弃用。

尝试使用loadThumbnail()。

喜欢(在科特林):

val cr = applicationContext.contentResolver
val bitmap = cr.loadThumbnail(uri,Size(25,25),null)
image.setImageBitmap(bitmap)