你可以使用 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 方法,你可以在这个方法里进行相应的操作。