MediaStore.Images.Thumbnails似乎是空的

时间:2012-04-10 16:21:01

标签: java android mediastore

我有一个应用程序,我写的上传图像到我的服务器,这在运行Android 2.3.4的droidx和运行android 4.0.3的两个不同的模拟器上运行良好。但是,当我尝试在华硕ee Pad Transformer(运行4.0.3)上运行它时,它总是告诉我MediaStore.Images.Thumbnails中有0个项目。

String[] projection = {MediaStore.Images.Thumbnails._ID};
cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
    projection,
    null,
    null,
    MediaStore.Images.Thumbnails.IMAGE_ID);
Log.d("Info","There are " + cursor.getCount() + " items");

应该有6个出现,5个来自相机,1个我从网上下载。刚才获取图像而不是缩略图的早期代码告诉我相机中有5张图像,所以我知道代码正常工作。

String[] projection = {MediaStore.Images.Media._ID};
    cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    projection,
    "Camera",
    null,null);
Log.d("Info","There are " + cursor.getCount() + " images");

当我打开图库应用程序时,这些图像都会显示出来。我还尝试清除媒体存储应用并重新启动设备以查看是否有帮助,但事实并非如此。在这一点上,我非常困惑,特别是因为这个完全相同的代码适用于手机和模拟器。

2 个答案:

答案 0 :(得分:4)

好的,找到了。
当你有图像ID时,你可以使用以下方法获取它的缩略图:

MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), imageID, MediaStore.Images.Thumbnails.MINI_KIND, null);

这将返回位图,无加载完整图像。

答案 1 :(得分:0)

我创建了一个实用程序类,如果你将uri传递给你想要的图像/视频,它将创建并返回图像和视频的缩略图。

package Utilities;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.ThumbnailUtils;
import android.provider.MediaStore;

public class AndroidUtils 
{
    public static final int THUMBNAIL_SIZE = 128;
    public static Bitmap GetImagePreview(String uri)
    {
        return ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(uri), THUMBNAIL_SIZE, THUMBNAIL_SIZE);
    }

    public static Bitmap GetVideoPreview(String uri)
    {
        return ThumbnailUtils.createVideoThumbnail(uri, MediaStore.Images.Thumbnails.MICRO_KIND);
    }
}