Android:通过ThumbnailUtils类获取视频文件的缩略图

jopen 4年前

在视频播放器上经常会看到,有很多的视频缩略图,本文讲的就是通过ThumbnailUtils类获取视频文件的缩略图;

运行截图如下:
这里写图片描述

代码如下:

MainActivity.java:

package com.vrinux.thumbnailutilsdemo;    import android.app.Activity;  import android.graphics.Bitmap;  import android.media.ThumbnailUtils;  import android.os.Bundle;  import android.os.Environment;  import android.provider.MediaStore;  import android.widget.ImageView;    public class MainActivity extends Activity {        //定义一个ImageView对象imgObj;      private ImageView imgObj;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);            //获取对象imgObj;          imgObj = (ImageView) findViewById(R.id.imgid);            //定义一个视频文件路径;          String filePath = null;            //视频文件的名字;          String filename = "video.3gp";            //判断SDCard是否挂载;由于Android版本的挂载路径不尽相同,所以建议使用一下的方法判断;          if (Environment.getExternalStorageState().equals(                  Environment.MEDIA_MOUNTED)) {              //获取SDCard根的路径              String sdPath = Environment.getExternalStorageDirectory().getPath();                //将SDCard根路径和文件名组装得到视频文件的路径;              filePath = sdPath + "/" + filename;                //调用下面定义的方法,获得指定大小的视频截图;              //最后的参数本人不太清楚是什么意思,只是这么用,其源码并非开源;              Bitmap bitmap = getVidioBitmap(filePath, 400, 400,                      MediaStore.Images.Thumbnails.MICRO_KIND);                //将获得的位图用imgObj显示;              imgObj.setImageBitmap(bitmap);          }        }        public Bitmap getVidioBitmap(String filePath, int width, int height,              int kind) {          //定義一個Bitmap對象bitmap;          Bitmap bitmap = null;            //ThumbnailUtils類的截取的圖片是保持原始比例的,但是本人發現顯示在ImageView控件上有时候有部分沒顯示出來;          //調用ThumbnailUtils類的靜態方法createVideoThumbnail獲取視頻的截圖;          bitmap = ThumbnailUtils.createVideoThumbnail(filePath, kind);            //調用ThumbnailUtils類的靜態方法extractThumbnail將原圖片(即上方截取的圖片)轉化為指定大小;          //最後一個參數的具體含義我也不太清楚,因為是閉源的;          bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,                  ThumbnailUtils.OPTIONS_RECYCLE_INPUT);            //放回bitmap对象;          return bitmap;      }  }

activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="fill_parent"      android:layout_height="fill_parent"      android:orientation="vertical" >        <ImageView          android:id="@+id/imgid"          android:layout_width="wrap_content"          android:layout_height="wrap_content" />    </LinearLayout>
来自:http://blog.csdn.net/vrinux/article/details/44961617