Finalmente l'ho capito !!
La soluzione che mi è venuta è stata qualcosa di simile:
Prima di tutto impostare il progresso massimo per SeekBar come la durata del video
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
Questo eseguibile continuerà ad aggiornare il progressbar :
private Runnable onEverySecond=new Runnable() {
@Override
public void run() {
if(seekBar != null) {
seekBar.setProgress(videoView.getCurrentPosition());
}
if(videoView.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
E poi il setOnSeekBarChangeListener per SeekBar può essere utilizzato per portare l'utente cerca sul supporto. Usando il FROMUSER booleano possiamo capire se si trattava di una chiamata indietro a causa di interazione dell'utente o le
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);
}
}
});
fonte
2011-10-13 21:45:57
fantastico! ma quando il video va alla fine e voglio giocare a 'videoView.start()' di nuovo seekBar non funziona, come risolvere questo problema? –