如何顺利从SD卡中的视频ID获取视频缩略图?

时间:2015-03-17 07:58:39

标签: android caching video bitmap video-thumbnails

我希望从sdcard中存储的视频ID中获取视频缩略图。实际上我已经通过使用位图获取缩略图,但它在获取缩略图时略微挂断了主线程。我想要的程序,我可以获取图像,并将其首先保存在缓存中,以便我的主线程不会挂起,最后它将顺利显示.......... 这是位图程序

ContentResolver crThumb = _context.getContentResolver();

Bitmap curThumb = MediaStore.Video.Thumbnails.getThumbnail(crThumb,_videoList.get(position).getID(),MediaStore.Video.Thumbnails.MICRO_KIND,null);

holder.thumbnail.setImageBitmap(curThumb);

1 个答案:

答案 0 :(得分:0)

直接从视频中获取缩略图需要时间,因此为了获取缩略图,您可以使用asynctask来读取缩略图,一旦获得缩略图就可以将其设置为您的imageview,`public class ThumbnailFetcher extends AsyncTask {

String mVideoPath;
ThumbnailManagerCallback mCallback;

public interface ThumbnailManagerCallback {
    public void onThumbnailReceived(Bitmap thumnail, String path);
}

public ThumbnailFetcher(ThumbnailManagerCallback callback){
    mCallback = callback;
}
@Override
protected Bitmap doInBackground(String... param) {
    // TODO Auto-generated method stub

    mVideoPath = param[0];
    try{

    return ThumbnailUtils.createVideoThumbnail(param[0],
            Thumbnails.MINI_KIND);
    }catch(Exception e)
    {
        return null;
    }
}

@Override
protected void onPostExecute(Bitmap thumbnail) {
    if(thumbnail != null)
    mCallback.onThumbnailReceived(thumbnail, mVideoPath);
}`

回调可以是你的适配器。