一、 VideoView
(一)、使用要点
1.通过videoView.setVideoURI(Uri.parse(file.getAbsolutePath()));设置要播放的数据源
2.可以使用系统自带的控制栏,创建方式如下:
MediaController mediaController = new MediaController(this);
3.使用系统自带的控制栏时需要将VideoView和控制栏进行双向绑定。示例如下:
//将MediaController和VideoView绑定到一起
videoView.setMediaController(mediaController);
//双向绑定,将VideoView绑定到MediaController
mediaController.setMediaPlayer(videoView);
4.可以根据业务需求调整控制栏的位置:
//设置MediaController的左上右下的位置
mediaController.setPadding(0,0,0,200);
(二)、示例代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
videoView = (VideoView) findViewById(R.id.video_view);
//设置播放文件的uri
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "曾经的你.mp4");
videoView.setVideoURI(Uri.parse(file.getAbsolutePath()));
MediaController mediaController = new MediaController(this);
//设置MediaController的左上右下的位置
mediaController.setPadding(0,0,0,200);
//将MediaController和VideoView绑定到一起
videoView.setMediaController(mediaController);
//双向绑定,将VideoView绑定到MediaController
mediaController.setMediaPlayer(videoView);
//播放视频
// videoView.start();
}
public void play(View view) {
videoView.start();
}
public void pause(View view) {
videoView.pause();
}
}
二、 Vitamio
(一)、三方类库引用步骤
1.创建一个空的Library
2.将Vitamio库文件中的res,src,AndroidManifest.xml文件拷贝到新创建的Library的src\main目录下
3.将Vitamio库文件中的libs文件夹下的四个文件夹拷贝到新创建的库文件的Libs文件夹下
4.在新创建的文件下创建一个jniLibs文件夹(new–>Folder–>JNI Folder),在创建的过程中,选择change folder location,然后将文件名修改为jniLibs
5.修改库文件的gradle,将sourceSets { main { jni.srcDirs = [‘src/main/jni’, ‘src/main/jniLibs’] } }改为sourceSets { main { jniLibs.srcDirs = [‘libs’] } }
6.给App工程添加依赖
注意:1-5也可以通过导入类库的方式添加,导入完成后注意修改gradle文件中buildToolsVersion节点的值。
(二)、使用要点
1.可以使用Vitamio播放网络视频
2.Vitamio的用法和VideoView基本一致
3.使用Vitamio播放网络视频时一定要初始化,初始化代码如下:
Vitamio.initialize(this)
4.使用Vitamio播放网络视频时可以设置缓冲监听,设置方式如下:
//设置缓冲监听
videoView.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
//percent表示缓冲百分比
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
cachePercent.setText("已缓冲:" + percent + "%");
}
});
videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
switch (what) {
//开始缓冲
case MediaPlayer.MEDIA_INFO_BUFFERING_START:
cachePercent.setVisibility(View.VISIBLE);
netSpeed.setVisibility(View.VISIBLE);
videoView.pause();
break;
//缓冲结束
case MediaPlayer.MEDIA_INFO_BUFFERING_END:
cachePercent.setVisibility(View.GONE);
netSpeed.setVisibility(View.GONE);
videoView.start();
break;
//正在缓冲
case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED:
netSpeed.setText("下载速度:" + extra + "kb/s");
break;
}
return true;
}
});
(三)、示例代码
public class MainActivity extends AppCompatActivity {
private TextView cachePercent;
private TextView netSpeed;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cachePercent = (TextView) findViewById(R.id.cache_percent);
netSpeed = (TextView) findViewById(R.id.net_speed);
//当初始化成功时再来加载网络视频
if (Vitamio.initialize(this)) {
final VideoView videoView = (VideoView) findViewById(R.id.video_view);
videoView.setVideoURI(Uri.parse("http://112.253.22.157/17/z/z/y/u/zzyuasjwufnqerzvyxgkuigrkcatxr/hc.yinyuetai.com/D046015255134077DDB3ACA0D7E68D45.flv"));
MediaController controller = new MediaController(this);
videoView.setMediaController(controller);
controller.setMediaPlayer(videoView);
//设置缓冲监听
videoView.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
//percent表示缓冲百分比
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
cachePercent.setText("已缓冲:" + percent + "%");
}
});
videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
switch (what) {
//开始缓冲
case MediaPlayer.MEDIA_INFO_BUFFERING_START:
cachePercent.setVisibility(View.VISIBLE);
netSpeed.setVisibility(View.VISIBLE);
videoView.pause();
break;
//缓冲结束
case MediaPlayer.MEDIA_INFO_BUFFERING_END:
cachePercent.setVisibility(View.GONE);
netSpeed.setVisibility(View.GONE);
videoView.start();
break;
//正在缓冲
case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED:
netSpeed.setText("下载速度:" + extra + "kb/s");
break;
}
return true;
}
});
videoView.start();
// videoView.pause();
// videoView.stopPlayback();
}
}
}