如何检测VideoView是播放视频还是缓冲? 我想显示一个弹出窗口,说视频正在缓冲。
在android API级别17中有一个回调setOnInfoListener
可以提供这些信息,但我使用的是API级别15(android ICS)。
我也看到了这个问题“Detect if a VideoVIew is buffering”,但建议的解决方案适用于MediaPlayer
,而不适用于VideoView
。
那我如何检测VideoView是否正在缓冲?这是一个很好的解决方案,运行一个线程来检查当前的搜索/进度级别,并根据它决定视频是播放还是缓冲。
更新
这不仅仅是我需要检查视频是否只在视频开头播放或缓冲,我想通过视频支付来检查它。
答案 0 :(得分:11)
要检查VideoView是否正在播放,您可以使用其isPlaying()方法
if ( videoView.isPlaying() )
{
// Video is playing
}
else
{
// Video is either stopped or buffering
}
要检查VideoView是否已完成,请使用以下内容
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
// Video Playing is completed
}
});
答案 1 :(得分:2)
我带来了以下hack,以便不实现自定义VideoView。如果当前位置与之前的1秒相同,则每1秒检查一次。如果是,则视频正在缓冲。如果没有,视频真的在播放。
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
int duration = videoView.getCurrentPosition();
if (old_duration == duration && videoView.isPlaying()) {
videoMessage.setVisibility(View.VISIBLE);
} else {
videoMessage.setVisibility(View.GONE);
}
old_duration = duration;
handler.postDelayed(runnable, 1000);
}
};
handler.postDelayed(runnable, 0);
答案 2 :(得分:1)
videoView.setOnPreparedListener(new OnPreparedListener()
{
public void onPrepared(MediaPlayer mp)
{
progressDialog.dismiss(); // or hide any popup or what ever
videoView.start(); // start the video
}
});