2013-04-11 17 views
8

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

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

この質問も「Detect if a VideoVIew is buffering」ですが、解答はMediaPlayerであり、VideoViewではありません。

どのようにVideoViewがバッファリングしているかどうかを検出できますか?スレッドを実行して現在のシーク/プログレスレベルをチェックし、ビデオが再生中かバッファリング中かを判断するのに適したソリューションですか?私がちょうどビデオは、唯一のビデオの開始時に演奏したり、バッファリングされたかどうかを確認する必要が好きではないされて

UPDATE

、私は払って映像を通してそれを確認したいです。 VideoViewが再生されているかどうかを確認するには

答えて

11

は、私が来て、あなたがVideoViewは、以下の使用を終了したかどうかを確認するにはそのisPlaying()メソッド、

if (videoView.isPlaying()) 
{ 
    // Video is playing 
} 
else 
{ 
    // Video is either stopped or buffering 
} 

を使用することができない

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
{ 
    @Override 
    public void onCompletion(MediaPlayer mp) 
    { 
      // Video Playing is completed 
    } 
}); 
+0

他のビデオをチェックしておくためにタイマーを')一時停止しますが、我々は( 'videoView.isPlayingを追加する必要があり – vuhung3990

+0

あなたのアイデアに感謝されますバッファリングモードです。 – User7723337

1
  videoView.setOnPreparedListener(new OnPreparedListener() 
      { 

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

カスタムVideoViewを実装しないためには、以下のようなハッキングがあります。アイデアは、現在の位置が1秒前と同じかどうかを1秒ごとにチェックすることです。そうであれば、ビデオはバッファリングされています。そうでない場合、ビデオは実際に再生されています。ビデオがバッファリングであるか、我々がいるかどうかをチェックするために `setOnBufferingUpdateListener`を設定する必要がある場合

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); 
関連する問題