2015-03-17 4 views
-1

Я хочу получить видео эскиз с видео id, который хранится в SDCard, плавно. На самом деле я уже получаю эскиз с помощью растрового изображения, но он слегка зависает в основном потоке, получая миниатюру. Я хочу, чтобы процедура, в которой я могу получить изображение, и сохранить его во-первых в кэш-памяти, чтобы мой основной поток не зависал и, наконец, он будет отображаться гладко .......... Вот растровая процедураКак получить видео эскиз с идентификатора видео в SDCard плавно?

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);

ответ

0

Получение миниатюры прямо из видео займет некоторое время, поэтому для того, чтобы принять миниатюру вы можете использовать AsyncTask читать миниатюру, как только вы получили миниатюру вы можете установить его в ImageView, `общественный класс ThumbnailFetcher расширяет 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); 
}` 

Обратный вызов может быть вашим адаптером.

Смежные вопросы