1
我有一个的Soundpool目的和几个声音,但一旦创建我无法改变的声音回放,无论如何,如循环的数量,体积,停止等的Soundpool声音不改变
声明代码:
public SoundPool sounds;
public HashMap<Integer, Integer> soundmap = new HashMap<Integer, Integer>();
static final public int UFO=3;
static final public int PlayerDeath=3;
static final public int InvaderDeath=2;
static final public int PlayerFire=1;
声音指定代码:
sounds = new SoundPool(10,AudioManager.STREAM_MUSIC,0);
soundmap.put(PlayerDeath,sounds.load(getContext(), R.raw.explosion, 1));
soundmap.put(InvaderDeath,sounds.load(getContext(), R.raw.invaderkilled, 1));
soundmap.put(PlayerFire,sounds.load(getContext(),R.raw.shoot, 1));
soundmap.put(UFO,sounds.load(getContext(),R.raw.ufo, 1));
开始/停止代码:
public void PlayUFOMusic()
{
sounds.play(soundmap.get(UFO),0.8F,0.8F,1,2000,1);
}
public void StopUFOMusic()
{
sounds.stop(soundmap.get(UFO));
}
我知道这些函数被调用,但没有什么会导致它改变。我也试过setLoop,setVolume,暂停和卸载,这些都没有工作。
任何想法?
啊,对不起,原本是-1,但我改成了2000,看看它是否永久循环就是问题所在。它确实循环,但这并不是问题。 – 2010-08-30 06:40:18
所以问题是你不能改变播放期间的声音?如果是这种情况,则不会事件保留对从play()函数返回的streamID的引用。这就是你运行setLoop()和其他方法的id。如果这对你没有帮助,请更好地解释你的问题。 – softarn 2010-08-30 08:40:43
嗯谢谢你,我认为被load加载的id被用来控制它,事后看来它显然不起作用。 – 2010-08-30 08:59:08