Я создал игру для 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 (или чего-либо еще) для более последовательного воспроизведения трех клипов?