我有一个应用程序,我写的上传图像到我的服务器,这在运行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");
当我打开图库应用程序时,这些图像都会显示出来。我还尝试清除媒体存储应用并重新启动设备以查看是否有帮助,但事实并非如此。在这一点上,我非常困惑,特别是因为这个完全相同的代码适用于手机和模拟器。
答案 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);
}
}