title: how to get seekbar to automatically move on song play?
body: <p>I have looked everywhere to fix my problem but i just cant seem to get it going.</p>
  
  <p>How do i make seekbar automatically slide with song play ?</p>
  
  <p>this is what i have so far.</p>
  
  <pre><code>ArrayList&lt;String&gt; arrlist = new ArrayList&lt;String&gt;(20);
  private Handler seekHandler = new Handler();
  ImageButton next, playPause, previous;
  SeekBar seekBar;
  
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.layout);
          getSupportActionBar().hide();
  
          getInit();
      }
  
      public void getInit() {
  
          songCurrentDurationLabel = (TextView) findViewById(R.id.startTime);
          songTotalDurationLabel = (TextView) findViewById(R.id.endTime);
  
          mediaPlayer = new MediaPlayer();
          mediaPlayer = MediaPlayer.create(this, R.raw.firstsong);
  
          seekBar = (SeekBar) findViewById(R.id.seekBar1);
          seekBar.setMax(mediaPlayer.getDuration());
          seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  
              @Override
              public void onStopTrackingTouch(SeekBar seekBar) {
                  // remove message Handler from updating progress bar
                  seekHandler.removeCallbacks(mUpdateTimeTask);
                  int totalDuration = mediaPlayer.getDuration();
                  int currentPosition = progressToTimer(seekBar.getProgress(), totalDuration);
  
                  // forward or backward to certain seconds
                  mediaPlayer.seekTo(currentPosition);
  
                  // update timer progress again
                  updateProgressBar();
              }
  
              @Override
              public void onStartTrackingTouch(SeekBar seekBar) {
                  // remove message Handler from updating progress bar
                  seekHandler.removeCallbacks(mUpdateTimeTask);
              }
  
              @Override
              public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                  if (mediaPlayer != null &amp;&amp; fromUser) {
                      mediaPlayer.seekTo(progress);
  //                   mediaPlayer.seekTo(progress * 1000);
                  }
              }
          });
  
          spinner = ((Spinner) findViewById(R.id.spinner1));
          spinner.setAdapter(songAdapter);
  
          previous = ((ImageButton) findViewById(R.id.previous));
          playPause = ((ImageButton) findViewById(R.id.play));
          next = ((ImageButton) findViewById(R.id.next));
  
          spinner.setOnItemSelectedListener(this);
          previous.setOnClickListener(this);
          playPause.setOnClickListener(this);
          next.setOnClickListener(this);
  
          totalDuration = mediaPlayer.getDuration();
          currentDuration = mediaPlayer.getCurrentPosition() / 1000;
  
          // Displaying Total Duration time
          songTotalDurationLabel.setText("" + milliSecondsToTimer(totalDuration));
  
          // Displaying time completed playing
          songCurrentDurationLabel.setText("" + milliSecondsToTimer(currentDuration));
      }
  
      public void updateProgressBar() {
          seekHandler.postDelayed(mUpdateTimeTask, 100);
      }
  
      private Runnable mUpdateTimeTask = new Runnable() {
          @Override
          public void run() {
              long totalDuration = mediaPlayer.getDuration();
              long currentDuration = mediaPlayer.getCurrentPosition() / 1000;
              int progress = (int) getProgressPercentage(currentDuration, totalDuration);
  
              // Updating progress bar
              seekBar.setProgress(progress);
  
              // Running this thread after 100 milliseconds
              seekHandler.postDelayed(this, 100);
          }
      };
  
      public int progressToTimer(int progress, int totalDuration) {
          int currentDuration = 0;
          totalDuration = (int) (totalDuration / 1000);
          currentDuration = (int) ((((double) progress) / 100) * totalDuration);
  
          // return current duration in milliseconds
          return currentDuration * 1000;
      }
  
      public int getProgressPercentage(long currentDuration1, long totalDuration1) {
          Double percentage = (double) 0;
  
          long currentSeconds = (int) (currentDuration1 / 1000);
          long totalSeconds = (int) (totalDuration1 / 1000);
  
          // calculating percentage
          percentage = (((double) currentSeconds) / totalSeconds) * 100;
  
          // return percentage
          return percentage.intValue();
      }
  
      public String milliSecondsToTimer(long milliseconds) {
          String finalTimerString = "";
          String secondsString = "";
  
          // Convert total duration into time
          int hours = (int) (milliseconds / (1000 * 60 * 60));
          int minutes = (int) (milliseconds % (1000 * 60 * 60)) / (1000 * 60);
          int seconds = (int) ((milliseconds % (1000 * 60 * 60)) % (1000 * 60) / 1000);
          // Add hours if there
          if (hours &gt; 0) {
              finalTimerString = hours + ":";
          }
  
          // Prepending 0 to seconds if it is one digit
          if (seconds &lt; 10) {
              secondsString = "0" + seconds;
          } else {
              secondsString = "" + seconds;
          }
  
          finalTimerString = finalTimerString + minutes + ":" + secondsString;
  
          // return timer string
          return finalTimerString;
      }
  
  }
  </code></pre>
  
  <p>I didnt include the song list and all the other stuff as i dont see why it would be necesary to put here. But anyways, when i do what i have here i dont get no error or anything, the seekbar just doesnt automatically move and when i try to move it manually to a position it goes right back to 0.</p>