声音池无法播放所有声音

时间:2020-03-24 12:57:11

标签: android soundpool

我正在制作一个可在按下播放按钮时播放声音的应用程序。问题是该应用程序应该为每个选中的切换按钮播放声音。例如,如果我选中了四个切换按钮中的三个,则它应该播放3次声音。问题在于,无论选中了多少切换按钮,它都只会播放一次声音。我不知道问题是来自我的代码还是来自声音池本身。这是相关的代码:

采样器类

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”

0 个答案:

没有答案