我正在尝试播放一个循环的 Ogg 文件,我尝试启用 setLooping(true)
但没有效果所以我尝试了 onCompletionListener
但它也不起作用,可以有人澄清我做错了什么吗?
musicPlayer = MediaPlayer.create(mContext, R.raw.overworld);
musicPlayer.setVolume(musicVolume, musicVolume);
// musicPlayer.setLooping(true);
musicPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
musicPlayer.stop();
musicPlayer.seekTo(0);
musicPlayer.start();
Log.d("Sound Manager", "Song Completed");
}
});
以下是我的播放功能,
public void playSong(int id) {
try {
stopSong();
musicPlayer = MediaPlayer.create(mContext, id);
musicPlayer.start();
} catch(Exception e) {
// Ignored
}
}
最佳答案
众所周知,MediaPlayer 在处理 ogg 文件时存在问题。 您最好切换到另一种文件格式。
另一件事是,我会继续尝试使用 setLooping(boolean),因为它很可能使用相同的方案并且更加清晰。
如果 MediaPlayer
对象停止,则调用 seekTo() 会导致 MediaPlayer 处于无效状态。您可以改为调用 pause()
但我不会调用任何这些方法,为什么不直接寻找呢?我猜想如果您删除 musicPlayer.stop()
它将起作用。
关于android MediaPlayer循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717314/