1

我有一个 MediaPlayer(.wav 文件),有时需要快速连续重复。如果它已经在播放,我重新启动它:

if (player.isPlaying()) {
    player.pause();
    player.seekTo(0);
}
player.start();

问题是,当 MediaPlayer 在某个随机位置中断时,最后通常会出现微小但明显的沙哑噪音。

我尝试过的一个解决方案是创建一个加载相同 wav 文件的 MediaPlayers 数组,循环播放它们,从不中断,如果当前项目已经在播放,则忽略呼叫(这种情况很少发生,并且未接来电不是无论如何,在一般弹幕中都注意到了)。

MediaPlayer player = players.get(current);
if (!player.isPlaying())
    player.start();
if((++current) >= players.size())
    current = 0;

这消除了噪音,但解决方案有点难看。有没有更好的办法?

4

1 回答 1

1

噪声可能是在周期中间被削减的波形。它可以通过在停止和启动之前调用 setVolume 来修复。拥有多个 MediaPlayers 并不是一个糟糕的主意,但您可能想看看SoundPool

于 2013-10-28T10:53:59.380 回答