我正在制作一个可在按下播放按钮时播放声音的应用程序。问题是该应用程序应该为每个选中的切换按钮播放声音。例如,如果我选中了四个切换按钮中的三个,则它应该播放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”