title: How to play/stop/play again using MediaPlayer
body: <p>I have a button when clicked it plays an audio, and while it is playing I can pause it and replay it again and so forth. I have a shake event, where I want to play the audio on shake and replay it when device is shaken again (by first stopping the audio, calling <code>stopAudio</code>?)</p>
  
  <p>I have the following code:</p>
  
  <pre><code>llBtn = (LinearLayout) findViewById(R.id.button);
  llBtn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          //Toast.makeText(MainActivity.this, "LL WAS CLICKED", Toast.LENGTH_SHORT).show();
          //IF AUDIO IS NOT PLAYING... PLAY AUDIO
          if (tvPS.getText() == "Stop Phrase!") {
              StopAudio();
          }
          else {
              PlayAudio();
          }
      }
  });
  //the same button is clicked to stop, it is currently setting to Pause.
  public void StopAudio() {
          mediaPlayer.pause();
          Toast.makeText(MainActivity.this, "STOPPED", Toast.LENGTH_SHORT).show();
          tvPS.setText("Play Phrase!");
      }
  
  public void PlayAudio() {
      //stopPlaying(mediaPlayer);
      tvPS.setText("Stop Phrase!");
  
      inResId = getResources().getIdentifier("play" , "raw", getPackageName());
  
      mediaPlayer = MediaPlayer.create(getBaseContext(), inResId);
      mediaPlayer.seekTo(0);
      mediaPlayer.start();
      mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
          @Override
          public void onCompletion(MediaPlayer mp) {
              //Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT).show();
              tvPS.setText("Play Phrase!");
              mediaPlayer.pause();
          }
      });
  }
  ...
  public void onShake() {
      // Do stuff!
      Toast.makeText(getBaseContext(), "Motion detected", 
              Toast.LENGTH_SHORT).show();
  
      if (mediaPlayer == null) {
          PlayAudio();
      }
  }
  </code></pre>
  
  <p>How can I modify the code above to handle Play, and then stop if stopped in the middle and then able to replay it again.</p>
  
  <p>The button click works but I am creating a new instance each time and not recycling. When the device is shaken, it plays the audio twice instead of just once.</p>