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

在视频播放器上经常会看到,有很多的视频缩略图,本文讲的就是通过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>
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值