Вот что я делаю:
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, чтобы увидеть, получаю ли я такие же результаты.
Спасибо за вашу помощь.