Android:MediaMetadataRetriever之setDataSource(Context,Uri)

Android 专栏收录该内容
7 篇文章 0 订阅

这个方法参数官方给出的说法是这样的

/**
* Sets the data source as a content Uri. Call this method before
* the rest of the methods in this class. This method may be time-consuming.
*
* @param context the Context to use when resolving the Uri
* @param uri the Content URI of the data you want to play
* */

在四大组件中获取Context对象是很简单的,但是在Adapter中就无法简单的获取到Context对象,也就是说无法获取es文件夹下raw中的视频路径…..

    @Override
    public void onBindViewHolder(final MViewHolder holder, int position) {
        String videoPath = videoList.get(position);
//        Log.d("video_info", "onBindViewHolder:视频路径检测 "+videoPath);
         VideoView v = holder.getVideo();
         ImageView image = holder.getImageView();
        v.setVideoURI(Uri.parse(videoPath));//设置路径

        //设置视频首帧预览
        MediaMetadataRetriever media = new MediaMetadataRetriever();
        media.setDataSource(c,Uri.parse(videoPath));//设置数据源
        Bitmap bitmap = media.getFrameAtTime();
        Log.d(TAG, "onBindViewHolder: bitmap:"+bitmap.getByteCount());
        image.setImageBitmap(bitmap);
    }

之前一直不理解这个Context是要传谁的上下文…我把几个控件的上下文传了进去,一直报错….
后来突然想到…可能是要传这个activity(我这里是Fragment)的上下文
于是就利用构造注入,传了进来。。。

   VideoAdapter videoAdapter = new VideoAdapter(videoList,getContext());

顺利完成第一帧获取…

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:创作都市 设计师:CSDN官方博客 返回首页

打赏作者

csu_zipple

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值