Звук SoundPool не меняется

1

У меня есть объект 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, паузу и разгрузку, ни одна из них не работала.

Любые идеи?

Теги:
soundpool

1 ответ

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);

чтобы сделать звуковой цикл навсегда?

Изменить: немного читайте вопрос, но если вы используете эту функцию воспроизведения, это цикл?

  • 0
    Ах, извините, изначально он был -1, но я перешел на 2000, чтобы посмотреть, была ли проблема в том, что цикл был вечным. Это делает цикл, но это не проблема.
  • 1
    Так что проблема в том, что вы не можете изменить звуки во время воспроизведения? Если это так, вы не сохраняете ссылку на streamID, возвращаемый функцией play (). Это идентификатор, на котором вы запускаете setLoop () и другие методы. Если это не поможет, пожалуйста, объясните вашу проблему лучше.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню