title: MediaPlayer Does not stop when a phone call is received
body: <p>MediaPlayer does not pause when a phone call is received. If anyone can help would be great!</p>
  
  <p>Code:</p>
  
  <pre><code> public class player1 extends Activity implements Runnable {
  
  
  private  MediaPlayer mp;
  private ProgressBar progressBar;
  private ImageButton pauseicon;
  private final int NUM_SOUND_FILES = 3;  //*****REPLACE THIS WITH THE ACTUAL NUMBER OF SOUND FILES YOU HAVE*****
  private int mfile[] = new int[NUM_SOUND_FILES];
  private Random rnd = new Random();
  
     @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.player_1);
          pauseicon = (ImageButton) findViewById(R.id.pauseicon);
          progressBar = (ProgressBar) findViewById(R.id.progressBar);
          getActionBar().setDisplayHomeAsUpEnabled(true);
  
  
  
          mfile[0] = R.raw.sound01;  //****REPLACE THESE WITH THE PROPER NAMES OF YOUR SOUND FILES
          mfile[1] = R.raw.sound02;  //PLACE THE SOUND FILES IN THE /res/raw/ FOLDER IN YOUR PROJECT*****
          mfile[2] = R.raw.sound03;
          // Listeners
          /**
           * Play button click event
           * plays a song and changes button to pause image
           * pauses a song and changes button to play image
           * */
  
  
          try{
               mp = MediaPlayer.create(player1.this, mfile[rnd.nextInt(NUM_SOUND_FILES)]);
               mp.seekTo(0);
               mp.start(); ;         
               progressBar.setVisibility(ProgressBar.VISIBLE);
               progressBar.setProgress(0);
               progressBar.setMax(mp.getDuration());
               new Thread(this).start();
  
           } catch (IllegalArgumentException e) {
               e.printStackTrace();
           } catch (IllegalStateException e) {
               e.printStackTrace();
           }
  
         PhoneStateListener phoneStateListener = new PhoneStateListener() {
              @Override
              public void onCallStateChanged(int state, String incomingNumber) {
                  if (state == TelephonyManager.CALL_STATE_RINGING) {
                      mp.pause();
                  } else if(state == TelephonyManager.CALL_STATE_IDLE) {
                      //Not in call: Play music
                  } else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
                      //A call is dialing, active or on hold
                  }
                  super.onCallStateChanged(state, incomingNumber);
              }
            };
  
  
          mp.setOnCompletionListener(new OnCompletionListener() {
  
              public void onCompletion(MediaPlayer mp) {
                  pauseicon.setImageResource(R.drawable.playicon);
                mp.seekTo(0);
  
              }
          });
  
          pauseicon.setOnClickListener(new View.OnClickListener() {
  
                 public void onClick(View v) {
                    if(mp.isPlaying()) {
                       mp.pause();
                       ((ImageButton) v).setImageResource(R.drawable.playicon);
                    } else {
                       mp.start();
                       ((ImageButton) v).setImageResource(R.drawable.pauseicon);
  
                    }
  
                 }
              });
     }
     static boolean runThread = true;
     public void run() {
          while ( runThread )  {
                int currentPosition=0;
                int total = mp.getDuration();
                if ( mp != null &amp;&amp; currentPosition &lt;= total )  {
                try {
                   Thread.sleep(1000);
                   currentPosition= mp.getCurrentPosition();
                } catch (InterruptedException e) {
                   return;
                } catch (Exception e) {
                   return;
                }            
                progressBar.setProgress(currentPosition);
             } else
                  try {
                      Thread.sleep(1000);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
          }
          runThread = false; 
      }
  
  
  
     @Override
      public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
          case android.R.id.home:
              NavUtils.navigateUpFromSameTask(this);
  
  
          if (mp != null)
          if(mp.isPlaying())
                mp.stop();
  
            mp.release();
  
              return true;
          default:
              return super.onOptionsItemSelected(item);
  
      }
  
         }
      @Override 
      public void onBackPressed(){
        if (mp != null){
            if(mp.isPlaying())
                mp.stop();
  
            mp.release();
        }
  
        //there is no reason to call super.finish(); here
        //call super.onBackPressed(); and it will finish that activity for you
        super.onBackPressed(); 
      }
      }
  </code></pre>
  
  <p>New Error</p>
  
  <pre><code> 09-10 19:41:45.250: E/AndroidRuntime(18428): FATAL EXCEPTION: main
  09-10 19:41:45.250: E/AndroidRuntime(18428): java.lang.RuntimeException: Unable to pause activity {com.example.mediaplayer/com.example.mediaplayer.player1}: java.lang.IllegalStateException
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3064)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3019)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2997)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.ActivityThread.access$800(ActivityThread.java:141)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1273)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.os.Handler.dispatchMessage(Handler.java:99)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.os.Looper.loop(Looper.java:137)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.ActivityThread.main(ActivityThread.java:5103)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at java.lang.reflect.Method.invokeNative(Native Method)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at java.lang.reflect.Method.invoke(Method.java:525)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at dalvik.system.NativeStart.main(Native Method)
  09-10 19:41:45.250: E/AndroidRuntime(18428): Caused by: java.lang.IllegalStateException
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.media.MediaPlayer.isPlaying(Native Method)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at com.example.mediaplayer.player1.onPause(player1.java:172)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.Activity.performPause(Activity.java:5235)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1233)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3050)
  09-10 19:41:45.250: E/AndroidRuntime(18428):    ... 12 more
  </code></pre>