How to use a Seekbar in android as a seekBar as well as a progressBar simultaneously?
Asked Answered
M

2

10

I intend to write a custom media controller for my app. I was planning to use seekbar to do both seeking and showing progress. Trying to implement this.

Does anyone have such implementation or am I on the wrong path ?

Mistletoe answered 11/10, 2011 at 19:23 Comment(0)
M
23

Finally I figured it out!!

The solution that I came up with was something like this :

First of all set the max progress for seekbar as the duration of the video

videoView.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {

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

This runnable will keep on updating the progressbar :

private Runnable onEverySecond=new Runnable() {

    @Override
    public void run() {

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

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

    }
};

And then the setOnSeekBarChangeListener for the seekbar can be used to take the user seeks on the media. By using the fromUser boolean we can make out whether it was a call back due to user's interaction or the

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);
            }
        }
    });
Mistletoe answered 13/10, 2011 at 21:45 Comment(1)
great ! but when video go to end and i want to play videoView.start() it again seekBar not working , how to resolve this problem ?Sanction
V
0

You set the seconday progress.

No, you're on the right track. It is very good for displaying stuff like download progress and current location for streams (media).

Vasculum answered 11/10, 2011 at 19:37 Comment(1)
Thanks for the reply. But I am using secondary progress to show the streamed amount. I am posting below what I have come up with.Mistletoe

© 2022 - 2024 — McMap. All rights reserved.