如何检测是否VideoView播放视频或缓冲?
我想显示一个弹出说视频缓冲。
在Android的API级别17有一个回调setOnInfoListener
,可以提供我这个信息,但我使用API 15级(安卓ICS)。
我也看到了这个问题:“ 检测是否VideoVIew正在缓冲 ”,但建议的解决方案是MediaPlayer
,而不是为了VideoView
。
那么,如何可以检测是否VideoView是缓冲? 这是一个好的解决方案来运行一个线程来检查当前寻求/进步水平,并根据该决定,如果视频正在播放或缓冲。
UPDATE
它不像我只需要检查,如果视频正在播放或缓冲仅在视频的开始,我想通过检查出来的视频支付。
要检查是否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
}
});
我为了不实现自定义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);
videoView.setOnPreparedListener(new OnPreparedListener()
{
public void onPrepared(MediaPlayer mp)
{
progressDialog.dismiss(); // or hide any popup or what ever
videoView.start(); // start the video
}
});