我有多个String
s,每个包含 5 个句子。现在,我想一次一个地将这些传递给 android Text To Speech。这意味着,第一个字符串被传递给引擎,第二个文本应该在引擎完成讲话后传递。下面是我的代码。
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;
}
}
现在,不幸的是,正在发生的事情是出乎意料的。语音引擎只是从这里和那里说出文本,而不是按顺序!它从不说出第一个文本,只是从某个地方选择一个文本并阅读它。为什么会这样?