移动端Android开发Android技术知识

音视频系列之——获取本地视频显示封面、时长,点击播放

2017-11-13  本文已影响306人  奔跑吧李博

github代码传送门

先看图:

giphy.gif

1.获取本地视频文件路径,也是最关键步骤。

    public List<LocalVideoBean> getList(Context context) {
        List<LocalVideoBean> sysVideoList = new ArrayList<>();
        // MediaStore.Video.Thumbnails.DATA:视频缩略图的文件路径
        String[] thumbColumns = {MediaStore.Video.Thumbnails.DATA,
                MediaStore.Video.Thumbnails.VIDEO_ID};
        // 视频其他信息的查询条件
        String[] mediaColumns = {MediaStore.Video.Media._ID,
                MediaStore.Video.Media.DATA, MediaStore.Video.Media.DURATION};

        Cursor cursor = context.getContentResolver().query(MediaStore.Video.Media
                        .EXTERNAL_CONTENT_URI,
                mediaColumns, null, null, null);

        if (cursor == null) {
            return sysVideoList;
        }
        if (cursor.moveToFirst()) {
            do {
                LocalVideoBean info = new LocalVideoBean();

                info.setPath(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media
                        .DATA)));
                info.setDuration(cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video
                        .Media.DURATION)));
                sysVideoList.add(info);
            } while (cursor.moveToNext());
        }
        return sysVideoList;
    }

MediaStore内部类所管理的文件类型。

2.将秒钟的时间转为分:秒的显示格式。除以60得到分钟,取余60得到秒钟。各自除以10得到十位,取余10得到个位,连接起来就成了"00:00"的表示。

    public static String parseTime(int seconds) {
        StringBuilder stringBuilder = new StringBuilder();
        int min = seconds / 60;
        int sec = seconds % 60;
        int minHeigh = min / 10;
        int minLow = min % 10;
        int secHeight = sec / 10;
        int secLow = sec % 10;
        stringBuilder.append(minHeigh).append(minLow).append(":").append(secHeight).append(secLow);
        return stringBuilder.toString();
    }

3.封面的显示我采用的是glide,直接传入视频路径可加载到封面图。显示的Imageview我才用的宽高相同的SquareImageview。

Glide.with(getApplicationContext()).load(localVideoBean.getPath()).into(ivCover);
上一篇 下一篇

猜你喜欢

热点阅读