我有一个对象MediaPlayer媒体播放器。我用它来一个接一个地播放不同的声音。
mediaplayer = MediaPlayer.create(context, ResIdMusicONE);
mediaplayer.start();
// some user input
mediaplayer.release();
mediaplayer = null;
// some other user input
mediaplayer = MediaPlayer.create(context, ResIdMusicTWO);
mediaplayer.start();
// some user input
mediaplayer.release();
mediaplayer = null;
有时候工作正常。但有时这两种声音是同时播放的。在媒体播放器应该已经发布并且等于null的位置。
感谢您的帮助。
答案 0 :(得分:0)
如果我是你,我会使用SoundPool类。使用SoundPool,您可以设置同时播放的流的数量,因此通过将其设置为1,您可以反复调用play(),最近的play()调用将是您听到的唯一声音。
不久前看看my post。它在问题中有一个SoundPool类的例子。
修改强> 您是否尝试过创建新实例并在每次要启动新声音时调用prepare()?
mediaplayer = new MediaPlayer();
mediaplayer.setDataSource(path);
mediaplayer.prepare();
mediaplayer.start();
虽然现在我考虑过它,但我很确定如果你使用sdcard中的文件而不是你的资源,我只需要这样做......嗯。