0

I need to play audio in an Android application so I used MediaPlayer. I created 2 buttons: Play and Pause but after I paused a song and want to resume it, the song starts again instead of resuming from where I left.

I wrote this code:

public MediaPlayer mediaPlayer = new MediaPlayer();


public void playPre(View view) {
    //mediaPlayer.release();
    mediaPlayer = MediaPlayer.create(MainActivity.this,R.raw.music);
    mediaPlayer.start(); 
    ImageView pausaOneButton = (ImageView)findViewById(R.id.PausaOneButton);
    pausaOneButton.setVisibility(View.VISIBLE);


}

public void stopPre(View view) {

    mediaPlayer.pause();
    ImageView pausaOneButton = (ImageView)findViewById(R.id.PausaOneButton);
    pausaOneButton.setVisibility(View.INVISIBLE);

}

What's wrong?

Community
  • 1
  • 1
Gualty
  • 251
  • 1
  • 4
  • 13

2 Answers2

1

You are re-creating the MediaPlayer upon every call of playPre(). You could change your code to this:

public MediaPlayer mediaPlayer = null;

public void playPre(View view) {
    if (mediaPlayer == null) {
        mediaPlayer = MediaPlayer.create(MainActivity.this,R.raw.music);
    }
    mediaPlayer.start(); 
    ImageView pausaOneButton = (ImageView)findViewById(R.id.PausaOneButton);
    pausaOneButton.setVisibility(View.VISIBLE);


}

public void stopPre(View view) {

    mediaPlayer.pause();
    ImageView pausaOneButton = (ImageView)findViewById(R.id.PausaOneButton);
    pausaOneButton.setVisibility(View.INVISIBLE);

}
akirk
  • 6,757
  • 2
  • 34
  • 57
0

Your problem relays in playPre(View view), try this:

if(mediaPlayer == null) {
  mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.fire);
}
if(mediaPlayer.isPlaying()){
  return;
}
mediaPlayer .start();

You will also have to check if the media is already playing with mediaPlayer.isPlaying()

Here is in an example project I made for media player: Test Project

Sid
  • 14,176
  • 7
  • 40
  • 48