Android 使用SoundPool连续播放剪辑

Android 使用SoundPool连续播放剪辑,android,media-player,soundpool,Android,Media Player,Soundpool,我为Android平板电脑创建了一个游戏,玩家可以在游戏中解决简单的数学问题。我正在努力让游戏大声朗读每个问题。我有所有数字0-9和20、30、40等的声音剪辑录音。。有了所有这些声音片段,我应该能够“混合和匹配”它们,大声朗读任何可能出现的问题。这是我当前的sayProblem()方法: 这可以在一定时间内正确阅读问题,但有时在一起构成问题的3个不同剪辑之间会有很长的延迟。 当它正常工作时,结果如下: “一加三”,当它不正确时,结果是这样的: “一加三”,其中周期表示不同长度的长暂停 我想使用

我为Android平板电脑创建了一个游戏,玩家可以在游戏中解决简单的数学问题。我正在努力让游戏大声朗读每个问题。我有所有数字0-9和20、30、40等的声音剪辑录音。。有了所有这些声音片段,我应该能够“混合和匹配”它们,大声朗读任何可能出现的问题。这是我当前的sayProblem()方法:

这可以在一定时间内正确阅读问题,但有时在一起构成问题的3个不同剪辑之间会有很长的延迟。 当它正常工作时,结果如下: “一加三”,当它不正确时,结果是这样的:

“一加三”,其中周期表示不同长度的长暂停

我想使用while循环继续调用sp.play()不是让它连续播放三个声音片段的正确方法,但这是唯一让我接近的方法

有谁能帮助我使用SoundPool(或其他任何东西)更连贯地连续播放三个剪辑

    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();
    }
}