Использование SoundPool для последовательного воспроизведения клипов - PullRequest
2 голосов
/ 17 августа 2011

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

...