3

I am able to use the android media player to play audio files. I can display the progress bar and attached 2 buttons to pause and play the audio track. My problem is I cannot control the track using the progress bar. I want to playing audio track to update depending of where I drag the progress bar to.

Below is my code

public class MyMediaPlayerView extends AppCompatActivity implements View.OnClickListener {

            /**
             * var for controller
             * restore timestamp today 12:11
             */
             SeekBar seek_bar;
             Button play_button, pause_button;
             MediaPlayer player;
             TextView text_shown;
             Handler seekHandler = new Handler();


            @Override
            protected void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.activity_launch_webview);
                 getSupportActionBar().setDisplayHomeAsUpEnabled(true);

                 getInit();
                 seekUpdation();
             }

             Runnable run = new Runnable() {
                @Override public void run() {
                     seekUpdation();
                }
             };

             public void seekUpdation() {
                 seek_bar.setProgress(player.getCurrentPosition());
                 seekHandler.postDelayed(run, 1000);

                 onProgressChanged(seek_bar, seek_bar.getProgress());
             }

             @Override 
             public void onClick(View view) {
                  switch (view.getId()) {
                  case R.id.play_button: text_shown.setText("Playing...");         
                  player.start();
                  break; case R.id.pause_button: player.pause();
                  text_shown.setText("Paused...");
                  }
             }

             public void onProgressChanged(SeekBar seek_Bar, int progress,
                  boolean fromUser) {
                  player.seekTo(progress);
             }
    }
TwoThumbSticks
  • 1,086
  • 3
  • 23
  • 38
  • 1
    check this link http://stackoverflow.com/questions/17168215/seekbar-and-media-player-in-android – Nauman Ali Shah Feb 15 '16 at 11:04
  • Looks to me like you'd call `seekTo` once per second even when there's no user interaction. That seems unnecessary. – Michael Feb 15 '16 at 11:22
  • Thanks I ended up removing that method call. onProgressChanged(seek_bar, seek_bar.getProgress()); and removed onProgressChanged(... mehod Then I used the accepted answer. – TwoThumbSticks Feb 15 '16 at 11:29

2 Answers2

5

Im doing it like this

seek_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if(fromUser)
                    player.seekTo(progress);
            }
       @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
Pablo Cegarra
  • 20,955
  • 12
  • 92
  • 110
  • Works like a charm! So we actually have to override the seek_bar.setOnSeekBarChangeListener(this); with our own implementation? Why is the dragable seekbar behaviour not the default for android when it seems that it is the most common use case? I am just a noob android developer can you explain why its the case? – TwoThumbSticks Feb 15 '16 at 11:32
0

u forget to add listener put this in your onCreate() :

seek_bar = (SeekBar)findViewById(R.id.yourseekbarhere);
seek_bar.setOnSeekBarChangeListener(this);

Should help u out

Strider
  • 4,452
  • 3
  • 24
  • 35