Cuối cùng tôi đã tìm ra !!
Các giải pháp mà tôi đã đưa ra được một cái gì đó như thế này:
Trước hết thiết lập tiến độ tối đa cho seekbar như trong suốt thời gian của video
videoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
seekBar.setMax(videoView.getDuration());
seekBar.postDelayed(onEverySecond, 1000);
}
});
Runnable này sẽ tiếp tục cập nhật các progressbar :
private Runnable onEverySecond=new Runnable() {
@Override
public void run() {
if(seekBar != null) {
seekBar.setProgress(videoView.getCurrentPosition());
}
if(videoView.isPlaying()) {
seekBar.postDelayed(onEverySecond, 1000);
}
}
};
Và sau đó setOnSeekBarChangeListener cho thanh tìm kiếm có thể được sử dụng để đưa người dùng tìm kiếm trên phương tiện. Bằng việc sử dụng FROMUSER boolean chúng ta có thể làm ra cho dù đó là một cuộc gọi trở lại do sự tương tác của người dùng hoặc
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);
}
}
});
Nguồn
2011-10-13 21:45:57
tuyệt vời! nhưng khi video đi đến kết thúc và tôi muốn chơi 'videoView.start()' nó một lần nữa seekBar không làm việc, làm thế nào để giải quyết vấn đề này? –