Android 使用VideoView播放本地视频详解

Android 使用VideoView播放本地视频详解,第1张

前言:由于视频源的尺寸导致播放的时候不能全屏,需要重写VideoView的onMeasure方法,所以我们创建ConditionVideoView继承于VideoView。

ConditionVideoView类代码如下:

public class ConditionVideoView extends VideoView {
    public ConditionVideoView(Context context) {
        super(context);
    }

    public ConditionVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ConditionVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //使视频全屏播放
        int width = getDefaultSize(0, widthMeasureSpec);
        int height = getDefaultSize(0, heightMeasureSpec);
        setMeasuredDimension(width, height);
    }
}

之后在activity_video_play.xml中引入重写后的VideoView




    

之后在VideoPlayActivity中实现播放本地视频的功能:

具体注释已经在代码中给出

public class VideoPlayActivity extends AppCompatActivity {
    private ConditionVideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);
        videoView = findViewById(R.id.videoView);

        //获取文件对象
        File file = new File(Environment.getStorageDirectory() + "/live.mp4");
        if (file.exists()) {
            //如果文件存在,则指定要播放的视频
            videoView.setVideoPath(file.getAbsolutePath());
        } else {
            Toast.makeText(this, "要播放的视频文件不存在", Toast.LENGTH_SHORT).show();
        }
        /**
         * 控制视频的播放 主要通过MediaController控制视频的播放
         */
        //创建MediaController对象
        MediaController mediaController = new MediaController(this);
        videoView.setMediaController(mediaController); //让videoView 和 MediaController相关联
        videoView.setFocusable(true); //让VideoView获得焦点
        videoView.start(); //开始播放视频
        //给videoView添加完成事件监听器,监听视频是否播放完毕
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                Toast.makeText(VideoPlayActivity.this, "该视频播放完毕!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

最后不要忘了在AndroidManifest.xml清单文件中加入允许访问SD卡的权限:


    
    

注意:如果按照如上步骤播放视频时,出现无法播放视频的提示框,那么可能就是文件路径出现了错误,或者指定的文件路径下没有视频资源。而且VideoView 只支持播放.mp4和.3GP格式

mp4格式:优点:分辨率高,大小适中

3GP格式:体积小,移动性强,适合在移动设备上使用。缺点:在电脑上兼容性差。

这样就能实现使用VideoView实现播放本地视频的功能~  如有任何问题,可以在评论区指正!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992685.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存