String
それぞれ5つの文を含むsの数があります。今、私はこれらを一度に 1 つずつ Android Text To Speech に渡したいと思います。つまり、最初の String がエンジンに渡され、2 番目のテキストはエンジンが読み上げを完了すると渡されます。以下は私のコードです。
List<String>textCollection = new ArrayList<String>();
//Add sentences to 'textCollection '. Code removed//
for(int i=0;i<textCollection.size();i++)
{
while(tts.isSpeaking())
{
}
Toast.makeText(Talk.this, ""+i, Toast.LENGTH_LONG).show();
new SpeakTheText().execute(textCollection.get(i));
}
//This class will speak the text
private class SpeakTheText extends AsyncTask<String,Void,String>
{
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
tts.speak(params[0], TextToSpeech.QUEUE_FLUSH, null);
return null;
}
}
残念ながら、今起きていることは予想外です。音声エンジンは、順番ではなく、あちこちからテキストを読み上げるだけです! 最初のテキストを話すことはありません。どこかからテキストを選んで読むだけです。なぜこうなった?