Android 获取网络视频缩略图【完美兼容各版本】

Android 获取网络视频缩略图,首先是一个不太完美但非常简洁的解决方案,在多数手机测试通过,目前只有samsung TabletGTP7310未能正常显示,但能通过本文方案二解决。

Ubuntu 14.04 x64配置Android 4.4 kitkat编译环境的方法

Ubuntu 12.04搭建Android开发环境

Ubuntu 14.04 配置 Android SDK 开发环境

64位Ubuntu 11.10下Android开发环境的搭建(JDK+Eclipse+ADT+Android SDK详细)

Ubuntu 12.10 x64 安装 Android SDK

方案一:感谢@xjxuvup 提供

鉴于多数人都用过ThumbnailUtils.createVideoThumbnail()方法,该方法在2.x系统下可用,API LEVEL > 14时却只能返回null,以下为解决该问题方案:

重写createVideoThumbnail()方法,如下

@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)

private Bitmap createVideoThumbnail(String url, int width, int height) {
  Bitmap bitmap = null;
  MediaMetadataRetriever retriever = new MediaMetadataRetriever();
  int kind = MediaStore.Video.Thumbnails.MINI_KIND;
  try {
   if (Build.VERSION.SDK_INT >= 14) {
    retriever.setDataSource(url, new HashMap<String, String>());
   } else {
    retriever.setDataSource(url);
   }
   bitmap = retriever.getFrameAtTime();
  } catch (IllegalArgumentException ex) {
   // Assume this is a corrupt video file
  } catch (RuntimeException ex) {
   // Assume this is a corrupt video file.
  } finally {
   try {
    retriever.release();
   } catch (RuntimeException ex) {
    // Ignore failures while cleaning up.
   }
  }
  if (kind == Images.Thumbnails.MICRO_KIND && bitmap != null) {
   bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
     ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
  }
  return bitmap;
 }

之后再自己的后台线程中调用该方法得到网络视频的缩略图bitmap然后在主线程中调用imageView.setImageBitmap(bitmap)即可;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/f45d6a87c51a2d3822141ca8ae6cce8b.html