Я делаю приложение, которое воспроизводит звук при нажатии кнопки воспроизведения. Дело в том, что приложение должно воспроизводить звук для каждой переключаемой кнопки. Например, если у меня есть 3 из моих четырех переключаемых кнопок, это должно воспроизвести звук 3 раза. Проблема в том, что он воспроизводит звук только один раз, независимо от того, сколько переключателей проверено. Я не знаю, происходит ли проблема из моего кода или из самого Soundpool. вот соответствующий код:
Класс сэмплера
public Sampler(Context appcontext) {
this.mycontext = appcontext;
sp = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
snareId = sp.load(mycontext, R.raw.snare, 1);
buttonArray = new ToggleButton[] {button1, button2, button3, button4};
buttonArray[0] = (((Activity)mycontext).findViewById(R.id.button1));
buttonArray[1] = (((Activity)mycontext).findViewById(R.id.button2));
buttonArray[2] = (((Activity)mycontext).findViewById(R.id.button3));
buttonArray[3] = (((Activity)mycontext).findViewById(R.id.button4));
}
метод воспроизведения:
public void play() {
final Handler hand = new Handler();
for (int i = 0; i < 4; i++) {
if (buttonArray[i].isChecked()) {
hand.postDelayed(new Runnable() {
@Override
public void run() {
try {
sp.play(snareId, 10, 10, 1, 0, 1);
hand.postDelayed(this, 1000);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
}
}
}, 1000);
}
}
}
Одна ошибка, которую я получаю при нажатии иногда, но не всегда: "W / AudioTrack: AUDIO_OUTPUT_FLAG_FAST отклонен сервером; frameCount 0 -> 34136 "