3

我有一个我写的应用程序将图像上传到我的服务器,它在运行 android 2.3.4 的 droidx 和运行 android 4.0.3 的两个不同模拟器上运行良好。但是,当我尝试在 Asus 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");

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

4

2 回答 2

4

好的,找到了。
当您拥有图像 ID 时,您会使用以下方法获得它的缩略图:

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

这将返回位图而不加载完整图像。

于 2013-03-12T15:39:49.140 回答
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);
    }
}
于 2013-02-18T19:25:54.583 回答