У меня есть объект 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, паузу и разгрузку, ни одна из них не работала.
Любые идеи?
А, извините, это было первоначально, но я изменился на 2000, чтобы увидеть, была ли проблема с этим циклом навсегда. Это цикл, это не проблема. –
Итак, проблема в том, что вы не можете изменить звучание ВО ВРЕМЯ воспроизведения? Если это так, вы не делаете запись ссылки на streamID, которая возвращается из функции play(). Это id, на котором вы запускаете setLoop() и другие методы. Если это вам не поможет, пожалуйста, объясните свою проблему лучше. – softarn
Ах, спасибо, я думал, что идентификатор, возвращаемый загрузкой, был использован для управления им, с задним числом, что, очевидно, это не сработает. –