Использование SoundPool для последовательного воспроизведения клипов
Я создал игру для Android Tablets, где игрок решает простые математические задачи. Я работаю над тем, чтобы игра прочитала каждую проблему вслух. У меня есть записи аудиоклипов всех чисел 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 (или чего-либо еще) для более последовательного воспроизведения трех клипов?