현재 음악에 맞춰서 seekbar가 움직이는것 까지 구현을 하였습니다(thread를 이용)(밑에 소스 참조)

여기서 사용자가 seekbar 을 원하는 위치로 이동 했을때 거기서 부터 다시 노래 재생과 seekbar가

움직이게 하려고 하는데 seekbar를 움직이면 다시 원래 있던 자리로 이동하네요....

도움 부탁드립니다.

package dku.android.dankook;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
public class thread extends Activity implements OnClickListener, OnCompletionListener, Runnable{
 private static final String TAG = "TEST_DEBUG";
 private Button b;
 private TextView tv;
 private SeekBar a ;
 private MediaPlayer mp;
 private AudioManager am;
 private int dur ;
 private Thread mp3t;
 private int move_song;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main1);
  
  mp = new MediaPlayer();
  mp.setOnCompletionListener(this);
  tv = (TextView)findViewById(R.id.tim);
  b = (Button)findViewById(R.id.but2);
  b.setOnClickListener(this);
  a = new SeekBar(this);
  mp = MediaPlayer.create(this, R.raw.rihanna);
  dur = mp.getDuration();
  String tima = changeToMinutes(dur);
  tv.setText(tima);
  mp3t = new Thread(this);
  a = (SeekBar)findViewById(R.id.progress);
  a.setIndeterminate(false);
  am = (AudioManager)getSystemService(AUDIO_SERVICE);
  a.setOnSeekBarChangeListener(tmdqo);
 
 }
 private SeekBar.OnSeekBarChangeListener tmdqo 
 = new SeekBar.OnSeekBarChangeListener() {
  
  @Override
  public void onStopTrackingTouch(SeekBar seekBar) {
   // TODO Auto-generated method stub
   seekBar.setProgress(move_song);
  }
  
  @Override
  public void onStartTrackingTouch(SeekBar seekBar) {
   // TODO Auto-generated method stub
   seekBar.setProgress(move_song);
  }
  
  @Override
  public void onProgressChanged(SeekBar seekBar, int progress,
    boolean fromUser) {
   // TODO Auto-generated method stub
  }
 };
 @Override
 public void onClick(View v) {
  if(v == b)
  {
   Toast.makeText(this, "PLAY", 500).show();
   try {
    mp.start();
    mp3t.start();
    
   } catch (Exception e) {
    // TODO: handle exception
   }
   
   Log.d(TAG,"MP3 FILE STARTED.");
  }
 }
 @Override
 public void onCompletion(MediaPlayer mp) {
  try {
   mp.stop();
   mp.prepare();
   mp.seekTo(0);
   mp3t.stop();
   Toast.makeText(this, "STOP", 500).show();
  } catch (Exception e) {
   // TODO: handle exception
  }
  
 }
 private String changeToMinutes(int mseconds)
 {
  int min = 0;
  int sec = 0;
  String minStr = "";
  String secStr = "";
  
  min = (int) Math.floor(mseconds/(1000*60));
  sec = (int) Math.floor((mseconds-(1000*60)*min)/1000);
  
  minStr = min < 10 ? "0"+min:""+min;
  secStr = sec < 10 ? "0"+sec:""+sec;
  
  return minStr+":"+secStr;
 }
 
 private int makePercent(int child,int parent)
 {
  int per = (int) Math.floor((child*100)/parent);
  return per;
 }
 
 
 private final Handler h = new Handler();
 private boolean done = false;
 private final Runnable mp3Run = new Runnable() {
  public void run() {
   int currentDuration = mp.getCurrentPosition();
   //time.setText(makePercent(currentDuration, myDuration));
   //time.setText(currentDuration+"_"+myDuration+"_"+makePercent(currentDuration,myDuration));
   a.setProgress(makePercent(currentDuration, dur));
   //Toast.makeText(PlayingMp3.this, makePercent(currentDuration, myDuration)+"", 1000);
  }
 };
 @Override
 public void run() {
  while(!done)
  {
   try {
    Thread.sleep(200);
   } catch (Exception e) {
    // TODO: handle exception
   }
   h.post(mp3Run);
  }
  
 }
 
}