11

VideoView がビデオまたはバッファリングを再生しているかどうかを検出する方法は?
ビデオがバッファリングされているというポップアップを表示したい。

Android API レベル 17 には、この情報を提供できるコールバックがありますsetOnInfoListenerが、私は API レベル 15 (Android ICS) を使用しています。

この質問「 VideoVIew がバッファリングしているかどうかを検出する」も見ましたが、推奨される解決策は 用であり、用ではMediaPlayerありませんVideoView

VideoViewがバッファリングしているかどうかをどのように検出できますか? スレッドを実行して現在のシーク/進行状況を確認し、それに応じてビデオが再生中かバッファリング中かを判断するのは良い解決策ですか。

アップデート

ビデオが再生されているか、ビデオの開始時にバッファリングされているかを確認する必要があるだけではなく、ビデオの支払いを通じて確認したい.

4

3 に答える 3

13

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
    }
});
于 2013-04-11T06:35:53.407 に答える
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);
于 2016-03-09T15:57:09.953 に答える
1
           videoView.setOnPreparedListener(new OnPreparedListener()
           {

               public void onPrepared(MediaPlayer mp)
               {                  
                   progressDialog.dismiss();     // or hide any popup or what ever
                   videoView.start();           // start the video
               }
           });  
于 2013-04-11T06:28:04.180 に答える