2011-10-11 12 views

cevap

23

Sonunda anladım!

Böyle bir şey oldu ile geldi çözüm: Her şeyden

İlk

videoView.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 

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

Bu katedilebilen progressbar güncelleme devam edecektir video süresi olarak seekbar için maksimum ilerleme set :

private Runnable onEverySecond=new Runnable() { 

    @Override 
    public void run() { 

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

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

    } 
}; 

sonra seekbar için setOnSeekBarChangeListener kullanıcı medya üzerinde arar almak için kullanılabilir

. fromUser boolean kullanarak bunu cevap için

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

harika! ama video sona erdiğinde ve ben 'videoView.start()' oynamak istiyorum, yine de çalışıyorum, bu sorunu nasıl çözülecek? –

0

seconday progress'u ayarlarsınız.

Hayır, doğru yoldasınız. Akımlar (medya) için indirme ilerlemesi ve mevcut konum gibi şeyleri görüntülemek için çok iyidir.

+0

teşekkürler çağrı nedeniyle bir kullanıcı etkileşimi geri olup ya da dışarı yapabilirsiniz. Ancak, akış miktarını göstermek için ikincil ilerlemeyi kullanıyorum. Geldiğimden aşağıda yazıyorum. –