Soundpool не воспроизводит все звуки - PullRequest
0 голосов
/ 24 марта 2020

Я делаю приложение, которое воспроизводит звук при нажатии кнопки воспроизведения. Дело в том, что приложение должно воспроизводить звук для каждой переключаемой кнопки. Например, если у меня есть 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 "

...