title: Using seekbar in android
body: <p>I am making an android application where i got a seekbar for some music. I got the seekbar to show the music playing status, where i currently am in the music playback. But how can i setup a listener so that i can say that the mediaplayer would play a specific place on a track? I know the code for setting the play time in mediaplayer, but how can i handle the click events from seekbar? like onClick() or anything similar? </p>
  
  <p>FIXED:
  My code:</p>
  
  <pre><code>package com.mycompany.appname;
  
  import java.io.File;
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.List;
  
  import android.app.ListActivity;
  import android.media.MediaPlayer;
  import android.os.Bundle;
  import android.os.CountDownTimer;
  import android.os.Environment;
  import android.view.KeyEvent;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemClickListener;
  import android.widget.ArrayAdapter;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.ListAdapter;
  import android.widget.ListView;
  import android.widget.SeekBar;
  import android.widget.SeekBar.OnSeekBarChangeListener;
  import android.widget.SlidingDrawer;
  
  public class MusicActivity extends ListActivity implements OnClickListener, OnSeekBarChangeListener {
  //Called when the activity is first created
  List&lt;String&gt; myList = new ArrayList&lt;String&gt;();
  EditText AddItemToListViewEditText;
    static final String[] COUNTRIES = new String[] {
        "Movies"
        };
    MediaPlayer mp1;
    String musicUri;
    Button PausePlay;
    int positionInt;
    SlidingDrawer slidingDrawer2;
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.musicscreen);
  
      //Import views
      PausePlay = (Button)findViewById(R.id.PausePlay);
      slidingDrawer2 = (SlidingDrawer)findViewById(R.id.slidingDrawer2);
  
      //Setup onClickListener for the buttons
      PausePlay.setOnClickListener(this);
  
      //Setup mediaPlayer
      mp1 = new MediaPlayer();
  
      //Setup ListView
      setListAdapter((ListAdapter) new ArrayAdapter&lt;String&gt;(this, R.layout.list_item, COUNTRIES));
      setListAdapter((ListAdapter) new ArrayAdapter&lt;String&gt;(this, R.layout.list_item, myList));
  
      //Setup seekBar
      final SeekBar progress = (SeekBar)findViewById(R.id.musicProgressBar);
      progress.setOnSeekBarChangeListener(this);
  
      ListView lv = getListView();
      lv.setTextFilterEnabled(true);
  
      File mFile = new File(Environment.getExternalStorageDirectory() + "/Music/");
      myList.addAll(Arrays.asList(mFile.list()));
      setListAdapter((ListAdapter) new ArrayAdapter&lt;String&gt;(this, R.layout.list_item, myList));
  
      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView&lt;?&gt; parent, View view,
            int position, long id) {
          //When an item is clicked, play it on a MediaPlayer
            //Play song
            positionInt = position;
            if (mp1.isPlaying()) {
                //Reset mediaPlayer
                mp1.reset();
                try {
                    musicUri = Environment.getExternalStorageDirectory() + "/Music/" + myList.get(positionInt);
                  mp1.setDataSource(musicUri);
                  mp1.prepare();
                  mp1.start();
                  slidingDrawer2.animateOpen();
              } catch (IllegalArgumentException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (IllegalStateException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
            } else {
            try {
                musicUri = Environment.getExternalStorageDirectory() + "/Music/" + myList.get(position);
              mp1.setDataSource(musicUri);
              mp1.prepare();
              mp1.start();
              slidingDrawer2.animateOpen();
          } catch (IllegalArgumentException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (IllegalStateException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
            //Setup seekBar
            final SeekBar progress = (SeekBar)findViewById(R.id.musicProgressBar);
            progress.setProgress(0);
            progress.setMax(mp1.getDuration());
            new CountDownTimer(mp1.getDuration(), 250) {
              public void onTick(long millisUntilFinished) {
                  if (progress.getProgress() == mp1.getDuration()) {
                      mp1.reset();
                      progress.setProgress(0);
                  } else {
                    progress.setProgress(mp1.getCurrentPosition());
                  }
              }
              public void onFinish() {}
            }.start();
          }
    }
      });
  }
  
  @Override
  public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
      if (fromUser == true) {
          mp1.seekTo(seekBar.getProgress());
      } else {
          //Do nothing
      }
  }
  
  @Override
  public boolean onKeyDown(int KeyCode, KeyEvent event) {
      if ((KeyCode == KeyEvent.KEYCODE_BACK)) {
          if (mp1.isPlaying()) {
              mp1.reset();
              System.exit(0);
          } else {
              finish();
          }
          return true;
      }
      return super.onKeyDown(KeyCode, event);
  }
  
  public void onClick(View src) {
      switch(src.getId()) {
      case R.id.PausePlay:
          if (mp1.isPlaying()) {
              mp1.pause();
              PausePlay.setText("Play");
          } else {
              mp1.start();
              PausePlay.setText("Pause");
          }
          break;
      }
  }
  
  @Override
  public void onStartTrackingTouch(SeekBar seekBar) {
      // TODO Auto-generated method stub
  }
  
  @Override
  public void onStopTrackingTouch(SeekBar seekBar) {
      // TODO Auto-generated method stub
  }
  }
  </code></pre>
  
  <p>My xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" &gt;
  
  
  &lt;TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Musikk"
      android:textAppearance="?android:attr/textAppearanceLarge" /&gt;
  
  &lt;FrameLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content" &gt;
  
  
  
  
      &lt;ListView
          android:id="@+android:id/list"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" &gt;
  
      &lt;/ListView&gt;
  
  
      &lt;SlidingDrawer
          android:id="@+id/slidingDrawer2"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:content="@+id/content"
          android:handle="@+id/handle" &gt;
  
  
          &lt;Button
              android:id="@+id/handle"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Spiller nå" /&gt;
  
  
          &lt;LinearLayout
              android:id="@+id/content"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical" &gt;
  
  
              &lt;SeekBar
                  android:id="@+id/musicProgressBar"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content" /&gt;
  
              &lt;LinearLayout
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content" &gt;
  
  
  
  
  
  
  
  
  
  
  
  
  
                  &lt;Button
                      android:id="@+id/PausePlay"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      android:text="Pause" /&gt;
  
              &lt;/LinearLayout&gt;
  
          &lt;/LinearLayout&gt;
      &lt;/SlidingDrawer&gt;
  
  &lt;/FrameLayout&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>