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つの異なるクリップの間に非常に長い遅延が発生する場合があります。それが正しく機能するとき、それは次のように出てきます:「1プラス3」、それが正しくないとき、それは次のように出てきます:

「1つ.............................プラス.................。 ......... 3 "ここで、ピリオドはさまざまな長さの長い休止を表します。

whileループを使用してsp.play()を呼び出し続けることは、3つのサウンドクリップを連続して再生するための正しい方法ではないと思いますが、それが私を近づけた唯一の方法です。

SoundPool(または他の何か)を使用して3つのクリップをより一貫して連続して再生するのを手伝ってくれる人はいますか?

4

0 に答える 0