Я использую метод 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 (), и я почти уверен, что они верны.
Может кто-нибудь увидеть, что я могу делать неправильно?Или знаете причину, по которой миниатюры перестают правильно генерироваться через некоторое время?