2

我为 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(或其他任何东西)更一致地连续播放三个剪辑?

4

0 回答 0