歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 獲取網絡視頻縮略圖【完美兼容各版本】

Android 獲取網絡視頻縮略圖,首先是一個不太完美但非常簡潔的解決方案,在多數手機測試通過,目前只有samsung TabletGTP7310未能正常顯示,但能通過本文方案二解決。

Ubuntu 14.04 x64配置Android 4.4 kitkat編譯環境的方法 http://www.linuxidc.com/Linux/2014-05/101148.htm

Ubuntu 12.04搭建Android開發環境 http://www.linuxidc.com/Linux/2012-09/69961.htm

Ubuntu 14.04 配置 Android SDK 開發環境 http://www.linuxidc.com/Linux/2014-05/101039.htm

64位Ubuntu 11.10下Android開發環境的搭建(JDK+Eclipse+ADT+Android SDK詳細) http://www.linuxidc.com/Linux/2013-06/85303.htm

Ubuntu 12.10 x64 安裝 Android SDK http://www.linuxidc.com/Linux/2013-03/82005.htm

方案一:感謝@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.linuxidc.com/Linux/2014-08/104986p2.htm

Copyright © Linux教程網 All Rights Reserved