android videoview播放器

来源:互联网 发布:spss 贝叶斯网络示例 编辑:程序博客网 时间:2024/05/18 12:28

VideoView播放器播放网络视频自带预加载而MediaPlayer做预加载操作的时候需要处理的东西还是挺多的,而且实现过程和SurfaceView+MediaPlayer用的要少的少 处理起来方便下面贴代码

    videoView.setVideoPath("你的路径");        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {            @Override            public void onPrepared(MediaPlayer mediaPlayer) {                mediaPlayer.setLooping(true);                videoView.start();                Toast.makeText(MainActivity.this,"START",Toast.LENGTH_SHORT).show();            }        });

简单的播放器就这样完成了 ,VideoView还可以配合MediaController使用做出一个带进度条MediaController用dispatchKeyEvent来进行回退 快进 上或者下一部视频选择(需要额外处理) 还有的是 暂停 继续是本身就有的  


VideoView+MediaController代码

 <span style="white-space:pre"></span>mediaController=new MediaController(this);        videoView.setVideoPath(SDCard.getSDCardPath()+"/my_video_file_one.mp4");        videoView.setMediaController(mediaController);        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {            @Override            public void onPrepared(MediaPlayer mediaPlayer) {                mediaPlayer.setLooping(true);                videoView.start();                Toast.makeText(MainActivity.this,"START",Toast.LENGTH_SHORT).show();            }        });        mediaController.setMediaPlayer(videoView);        mediaController.requestFocus();        mediaController.show(2000);//控制几秒后自动隐藏

代码相比也就是多了几行 初始化获取上下文 然后把他们两绑定

使用的时候有没有发现 有些视频不是全屏播放 即使设置了fill-parent也是这样 这时候我们就需要添加一个类 继承VideoView 然后在类中添加一个方法

    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)    {        int width = getDefaultSize(0, widt);        int height = getDefaultSize(0, heigh);        setMeasuredDimension(width , height);    }

这样就能做到全屏的播放了

关于播放网络视频

URI uri=URI.parse("网络地址");

只需要把.setVideoPath改成.setVideoURI即可

Demo地址:点击打开链接

这个Demo播放网络视频的地址是youtube的 所以你们需要改成国内的视频地址 或者使用vpn播放

0 0