我有一个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,暂停和卸载,这些都没有。
有什么想法吗?
答案 0 :(得分:2)
这是play()语法:
public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
所以不应该是:
sounds.play(soundmap.get(UFO),0.8F,0.8F,1,-1, 1);
让声音永远循环?
编辑:稍微阅读一下这个问题但是如果你使用这个播放功能,它会循环吗?