代码如下:
Uri uri = Uri.parse(URL);
video.setVideoURI(uri);
video.start();
我使用 VideoView 来播放一个流媒体格式的视频。
视频是一个 VideoView。
我想获取 buffering percent 像 MediaPlayer 中的 setOnBufferingUpdateListener。
MediaPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
//buffering is percent
}
});
如何实现?
你可以使用 VideoView 的 setOnInfoListener 方法来监听视频缓冲状态。
具体来说,你可以这样做:
video.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START) {
// 开始缓冲
} else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
// 缓冲结束
} else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_UPDATE) {
// 缓冲进度更新
int percent = extra;
}
return false;
}
});
在这里,当视频开始缓冲时,what 参数的值为 MediaPlayer.MEDIA_INFO_BUFFERING_START;
当视频缓冲结束时,what 参数的值为 MediaPlayer.MEDIA_INFO_BUFFERING_END;
当视频缓冲进度更新时,what 参数的值为 MediaPlayer.MEDIA_INFO_BUFFERING_UPDATE,此时可以通过 extra 参数获取缓冲进度百分比。
你也可以使用 VideoView 的 setOnPreparedListener 方法来监听视频是否准备完毕。
具体来说,你可以这样做:
video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// 视频准备完毕,可以进行播放
}
});
在这里,当视频准备完毕时,会回调 onPrepared 方法,你可以在这个方法里进行相应的操作。