Android 2.2 GetThumbnail 返回不正确的位图

标签 android thumbnails mediastore

我正在使用 MediaStore.Video.Thumbnails.getThumbnail() 方法来 获取我在列表中显示的文件的缩略图。这有效 一开始很好,但过了一会儿我回来的缩略图 不是与文件匹配的那些。一旦 GetThumbnail() 开始 失败它似乎一遍又一遍地只返回相同的位图, 不管我尝试哪个文件。这发生在我的 HTC Desire 上, 运行 Android 2.2,并且很难重现 - 它会在一段时间后才开始发生。

这是我的源代码(精简版):

static public Bitmap GetThumbnailForFile(File p_File, Activity
p_activity)
{
    long imageID = GetImageID(p_File, p_activity);
    if (imageID < 0)
    {
        return null;
    }
    return
MediaStore.Images.Thumbnails.getThumbnail(p_activity.getContentResolver(),
imageID, Thumbnails.MICRO_KIND, null);
}

public static long GetImageID(File p_File, Activity p_activity)
{
    long result =-1;
    Cursor c =
p_activity.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
        new String[]{MediaStore.Images.Media._ID +""},
        MediaStore.Images.Media.DATA +" like '" + p_File.getAbsolutePath(),
        null, null);
    c.moveToNext();
    if (!c.isAfterLast())
    {
        result = c.getLong(0);
    }
    c.close();
    return result;
}

我也在做同样的事情来加载视频缩略图。我用过 一些调试代码来检查 GetImageID() 返回的值, 我很确定他们是正确的。

谁能看出我可能做错了什么?或者知道任何原因 缩略图在一段时间后停止正确生成?

最佳答案

嗯,您的查询中有一个“赞”,而您只有一个“.”。此外,您没有保护您的查询免受 SQL 注入(inject)攻击!

我会推荐这样的查询:

p_activity.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    new String[]{ MediaStore.Images.Media._ID +"" },
    MediaStore.Images.Media.DATA + "=?",
    new String[]{ p_File.getAbsolutePath() },
    null);

也许这已经是问题了。

关于Android 2.2 GetThumbnail 返回不正确的位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3820393/

相关文章:

camera - 是否可以在没有 "tap to accept"的情况下使用 Google Glass 拍照?

Android:保存新图像后刷新图库

android - 在 ListView 中重复图像...正在从视频中加载缩略图

android - Android 下的 unix 实用程序

android - 有没有办法在图层列表定义中对我的应用程序项目进行动画(旋转)?

video - 通过 HTTP 下载部分视频(用于远程缩略图)

css - 以没有固定图像大小的标题为中心的缩略图库

安卓:Intent.getBooleanArrayExtra(key) 返回 null

android - json解析错误: type org. json.JSONArray无法转换为JSONObject

Windows 资源管理器 - 每个文件的自定义图标?