分享

Android获取SDCard上视频缩略图Thumbnail

 openwudi 2013-11-30

今天做到Android视频缩略图,上网找到了一种方法,可能不是最好的,但是先记下来,和大家分享下。

首先取得Cursor

  1. // MediaStore.Video.Thumbnails.DATA:视频缩略图的文件路径  
  2. String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,  
  3.         MediaStore.Video.Thumbnails.VIDEO_ID };  
  4.   
  5. // MediaStore.Video.Media.DATA:视频文件路径;  
  6. // MediaStore.Video.Media.DISPLAY_NAME : 视频文件名,如 testVideo.mp4  
  7. // MediaStore.Video.Media.TITLE: 视频标题 : testVideo  
  8. String[] mediaColumns = { MediaStore.Video.Media._ID,  
  9.         MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE,  
  10.         MediaStore.Video.Media.MIME_TYPE,  
  11.         MediaStore.Video.Media.DISPLAY_NAME };  
  12.   
  13. cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,  
  14.         mediaColumns, null, null, null);  

  1. BitmapFactory.Options options = new BitmapFactory.Options();    
  2.       options.inDither = false;    
  3.       options.inPreferredConfig = Bitmap.Config.ARGB_8888;  
  4.       ContentResolver contentResolver = getContentResolver();  
  5.         
  6. if (cursor.moveToFirst()) {  
  7.     do {  
  8.         LocalVideoInfo info = new LocalVideoInfo();  
  9.         int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));  
  10.         Cursor thumbCursor = managedQuery(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,  
  11.                 thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID+ "=" + id, null, null);  
  12.         if (thumbCursor.moveToFirst()) {  
  13.             info.setThumbPath(thumbCursor.getString(thumbCursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA)));  
  14.         }  
  15.         info.setPath(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)));  
  16.         info.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)));  
  17.         info.setDisplayName(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)));  
  18.         info.setBitmap(MediaStore.Video.Thumbnails.getThumbnail(contentResolver, id,  Images.Thumbnails.MICRO_KIND, options));  
  19.         info.setMimeType(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)));  
  20.         sysVideoList.add(info);  
  21.     } while (cursor.moveToNext());  
  22. }  

缩略图关键是下面这句,返回的是一个Bitmap:

  1. MediaStore.Video.Thumbnails.getThumbnail(contentResolver, id,  Images.Thumbnails.MICRO_KIND, options)  

之后在列表中显示就可以了。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多