'MediaPlayer stop playing after about 5 seconds

I'm currently developing a simple game and now it's time to add music and sound effect. I tried using MediaPlayer, just like described here: Android media player bug

However I have another problem, the MediaPlayer stop playing the music after about 5 seconds. What is probable causing this?



Solution 1:[1]

I had this problem too. It was probably due to having the MediaPlayer-object only existing within a method.

For example:

//ERROR, stops after 5 sec!
public static void playMusic(int id)
{
  MediaPlayer mediaPlayer = MediaPlayer.create(context, id);
  mediaPlayer.setLooping(true);
  mediaPlayer.start();
}

It is most likely that the garbage collector will come in and clean away the MediaPlayer-object.

This fixed the error for me:

//mediaPlayer-object will not we cleaned away since someone holds a reference to it!
private static MediaPlayer mediaPlayer;

public static void playMusic(int id)
{
    mediaPlayer = MediaPlayer.create(context, id);
    mediaPlayer.setLooping(true);
    mediaPlayer.start();
}

Solution 2:[2]

You should create an asychronous code to let media player play what he has to play in the background. Something like this:

final MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.nomarxia);


                Handler mHandler = new Handler();
                mHandler.postDelayed(new Runnable() {
                    public void run() {
                        mp.start();
                    }
                }, mp.getDuration());

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 ktsakiris