我目前正在开发一款简单的游戏,现在是时候添加音乐和音效了。我尝试使用MediaPlayer
,就像这里描述的那样:Android media player bug
但是我还有另外一个问题,MediaPlayer
在大约5秒后停止播放音乐。造成这种情况的可能性是什么?
答案 0 :(得分:57)
我也有这个问题。 这可能是因为MediaPlayer对象只存在于方法中。
例如:
//ERROR, stops after 5 sec!
public static void playMusic(int id)
{
MediaPlayer mediaPlayer = MediaPlayer.create(context, id);
mediaPlayer.setLooping(true);
mediaPlayer.start();
}
垃圾收集器很可能会进入并清除MediaPlayer对象。
这为我解决了错误:
//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();
}
答案 1 :(得分:0)
您应该创建一个异步代码,以使媒体播放器播放其在后台播放的内容。像这样:
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());