Android SoundPool иногда воспроизводит звук дважды, когда параметр цикла установлен на 0 - PullRequest
1 голос
/ 06 апреля 2011

Вот что я делаю:

private SoundPool pool;
private int soundId;

@Override
public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);

  // new SoundPool with three channels, STREAM_MUSIC, default quality
  pool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);

  // load sound with current context, click resource, priority 1
  soundId = pool.load(this, R.raw.click, 1);

  // originally I wasn't using this but it seemed to help a bit
  // set no loop for soundId
  pool.setLoop(soundId, 0);
}

private void play()
{
  Log.v(TAG, "Play the sound once!");

  // half volume L & R, priority 1, loop 0, rate 1
  pool.play(soundId, 0.5f, 0.5f, 1, 0, 1);
}

@Override
public void onDestroy()
{
  super.onDestroy();

  // release the pool
  pool.release();
}

Первоначально я использовал WAV-файл для звука щелчка, и проблема возникала в 90% случаев.Я добавил setLoop, и он, кажется, немного его уменьшил.

Я подумал, что это может быть проблема с загрузкой файлов .wav, поэтому я преобразовал файл в .mp3.Теперь проблема возникает в 5% случаев, но это все же происходит.Я построил с вызовом setLoop и без него, и кажется, что его включение немного помогает.

Как вы можете видеть, я добавил сообщение журнала отладки, чтобы убедиться, что я случайно не вызываю функцию воспроизведения дважды.Согласно выводу журнала звук воспроизводится только один раз, но я слышу его дважды.

Я также использовал несколько разных звуковых файлов.Некоторые файлы, кажется, повторяются чаще, чем другие.Я не вижу никакой корреляции, за исключением того, что это происходит чаще с файлами .wav.

Я вижу, что проблема возникает в Samsung Continuum с 2.1 (min & target API: level 7).Я не испытывал лишних циклов ни с какими рыночными приложениями, которые я скачал на том же устройстве.К сожалению, у меня нет других устройств для тестирования.

Я нашел только одного человека, который столкнулся с этой проблемой, и он или она также использовали устройство Samsung.

Вот ссылкак другой сообщенной проблеме:

https://stackoverflow.com/q/4873995/695336

На данный момент, я думаю, я попытаюсь сделать сборку релиза, чтобы увидеть, если это все еще происходит, а затем, возможно, преобразовать в формат .ogg.После этого я, вероятно, попробую переключиться на MediaPlayer, чтобы увидеть, получаю ли я такие же результаты.

Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 10 апреля 2011

У меня возникла та же проблема при разработке для моего XPeria 10 mini pro (Android 2.1). Принятый ответ на этот вопрос работал для меня:

Проблема со Soundpool и Samsung Galaxy S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...