如何检测是否VideoView播放视频或缓冲?(How to detect if VideoView

2019-08-21 15:56发布

如何检测是否VideoView播放视频或缓冲?
我想显示一个弹出说视频缓冲。

在Android的API级别17有一个回调setOnInfoListener ,可以提供我这个信息,但我使用API 15级(安卓ICS)。

我也看到了这个问题:“ 检测是否VideoVIew正在缓冲 ”,但建议的解决方案是MediaPlayer ,而不是为了VideoView

那么,如何可以检测是否VideoView是缓冲? 这是一个好的解决方案来运行一个线程来检查当前寻求/进步水平,并根据该决定,如果视频正在播放或缓冲。

UPDATE

它不像我只需要检查,如果视频正在播放或缓冲仅在视频的开始,我想通过检查出来的视频支付。

Answer 1:

要检查是否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
    }
});


Answer 2:

我为了不实现自定义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);


Answer 3:

           videoView.setOnPreparedListener(new OnPreparedListener()
           {

               public void onPrepared(MediaPlayer mp)
               {                  
                   progressDialog.dismiss();     // or hide any popup or what ever
                   videoView.start();           // start the video
               }
           });  


文章来源: How to detect if VideoView is playing video or Buffering?