2011-10-11 11 views

答えて

23

最後に私はそれを理解しました!ビデオの期間

videoView.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 

      seekBar.setMax(videoView.getDuration()); 
      seekBar.postDelayed(onEverySecond, 1000); 
     } 
    }); 

この実行可能にプログレスバーを更新し続けますよう、すべての最初には、シークバーの最大の進歩を設定

:私が思いついた

ソリューションは、このようなものでした:

private Runnable onEverySecond=new Runnable() { 

    @Override 
    public void run() { 

     if(seekBar != null) { 
      seekBar.setProgress(videoView.getCurrentPosition()); 
     } 

     if(videoView.isPlaying()) { 
      seekBar.postDelayed(onEverySecond, 1000); 
     } 

    } 
}; 

そして、シークバーのためsetOnSeekBarChangeListenerは、ユーザーを取るために使用することができますが、メディアに求めています。 FROMUSERブールを使用することにより、我々は、それが原因のユーザの対話にコールバックまたは返信用

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, 
       boolean fromUser) { 

      if(fromUser) { 
       // this is when actually seekbar has been seeked to a new position 
       videoView.seekTo(progress); 
      } 
     } 
    }); 
+0

素晴らしい!ビデオが終了するときに 'videoView.start()'を再生したい場合は、再びseekBarが動作しないので、この問題を解決するにはどうすればいいですか? –

0

seconday progressを設定します。

いいえ、あなたは正しい方向にあります。ストリーム(メディア)のダウンロードの進行状況や現在地などの情報を表示するのに非常に適しています。

+0

おかげだったかどうかを作ることができます。 しかし、私はストリーミング量を表示するためにセカンダリ進捗状況を使用しています。 私は私が思いついたものの下に投稿しています。 –

関連する問題