我为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个不同的剪辑之间会有很长的延迟,这些剪辑会一起构成问题。 当它正常工作时,它出现如下: “一加三”,当它不正确时,就会出现这样的情况:
“一个............................. plus ............... ............三“其中句号代表不同长度的长暂停。
我想用一个while循环继续调用sp.play()不是让它连续播放三个声音片段的正确方法,但它是唯一让我接近的东西。
任何人都可以帮助我使用SoundPool(或其他任何东西)连续播放三个片段吗?