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 p开发者_开发技巧laying the music after about 5 seconds. What is probable causing this?
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();
}
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());
精彩评论