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播放