我为 Android 平板电脑创建了一个游戏,玩家正在解决简单的数学问题。我正在努力让游戏大声朗读每个问题。我有所有数字 0-9 和 20、30、40 等的声音剪辑录音。有了所有这些声音剪辑,我应该能够“混合和匹配”它们以大声读出任何可能的问题。这是我当前的 sayProblem() 方法:
private void sayProblem() {
if(soundBtn.isChecked() == true){
Runnable sayRun = new Runnable() {
public void run(){
while(sp.play(numberClips[firstOperand - 1], 1, 1, 5, 0, 1) == 0);
Log.i(myTag, "FirstOp said");
while(sp.play(signClips[CURRENT_TYPE], 1, 1, 4, 0, 1) == 0);
Log.i(myTag, "sign said");
while(sp.play(numberClips[secondOperand - 1], 1, 1, 3, 0, 1) == 0);
Log.i(myTag, "2ndOp said");
}
};
Thread sayThread = new Thread(sayRun);
sayThread.start();
}
}
这在某些时候可以正确阅读问题,但有时会在 3 个不同的剪辑之间存在很长的延迟,这些剪辑一起构成一个问题。当它正常工作时,它会像这样:“一加三”,当它不正确时,它会像这样出现:
“一个…………加上………… .........三" 其中句点代表不同长度的长时间停顿。
我想使用 while 循环来继续调用 sp.play() 不是让它连续播放三个声音片段的正确方法,但它是唯一让我接近的东西。
谁能帮助我使用 SoundPool(或其他任何东西)更一致地连续播放三个剪辑?