Чтение документации по Soundpool проясняет многое:
- при воспроизведении звука вы передаете int, ссылаясь на загруженный звук. Этот метод (и другие, запускающие воспроизведение звука), soundpool.play (int) возвращает int, ссылаясь на threadID, в котором теперь воспроизводится звук.
- когда вы хотите остановить звук (или зацикленный звук), вы должны использовать int идентификатора потока, который вы только что вернули, когда начали проигрывать звук, а не int самого звука!
Затем в классе soundpool вы устанавливаете приватный int threadIDInt = mSoundPool.play/setloop/whwhat(int soundtobeplayed, int / float volumeleft, int / float volumeright, скорость перемещения, int loopornot); [примечание: аргументы немного выдуманы; смотри вверх]
Чтобы затем остановить звук (или приостановить, или установить его на петлю или нет), вы передаете mSoundPool.stop (threadIDINT);
TLDR: есть различие между int, который обозначает ваш звук, и внутренним звуковым пулом int, используемым для обозначения потока, в котором воспроизводится ваш текущий звук.