我正在使用 MediaPlayer 在我的应用程序中播放视频。视频需要一段时间来缓冲,并且视频视图在这段时间内是空白的。
有没有办法在用户在上一个屏幕时开始缓冲,这样当他来到视频播放屏幕时,视频就可以播放了?
谢谢克里斯
我正在使用 MediaPlayer 在我的应用程序中播放视频。视频需要一段时间来缓冲,并且视频视图在这段时间内是空白的。
有没有办法在用户在上一个屏幕时开始缓冲,这样当他来到视频播放屏幕时,视频就可以播放了?
谢谢克里斯
MediaPlayer 允许您注册OnPreparedListener和OnBufferingUpdateListener。
mediaPlayer.setOnInfoListener(new OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == 703) {
// Not documented :(
// See http://stackoverflow.com/a/9622717/435605
isBuffering = true;
} else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
isBuffering = false;
}
return false;
}
});
如下所示:
mp.setOnInfoListener(new OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START) {
loadingDialog.setVisibility(View.VISIBLE);
} else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
loadingDialog.setVisibility(View.GONE);
}
return false;
}
});
我没有尝试过,但您可以尝试在用户位于前一个屏幕时调用 MediaPlayer.prepareAsync(),然后在用户移动到右侧屏幕时调用 .start()。不确定媒体播放器在此过程中的位置...您可能需要在用户想要观看视频时动态更新的一个活动中完成所有这些操作。