【发布时间】:2019-02-13 10:31:46
【问题描述】:
我希望setOnUtteranceProgressListener 应该在演讲结束后通知Toast。它似乎不起作用。
我使用了setOnUtteranceProgressListener,在发言功能上我提到了paramaters,如下所示..
Bundle params = new Bundle();
params.putString(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, MainActivity.this.getPackageName());
我在调用 speak 函数时给出了一个“UniqueId”,如下所示。
myTTS.speak(message,TextToSpeech.QUEUE_FLUSH,params,"UniqueId");
在我的program 中,文本到语音引擎完成讲话后,它应该运行一个 Toast 通知它已完成讲话。但 setOnUtteranceProgressListner 似乎不起作用。
myTTS.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
}
@Override
public void onDone(String utteranceId) {
Toast.makeText(MainActivity.this,"Finished speaking.",Toast.LENGTH_LONG).show();
}
@Override
public void onError(String utteranceId) {
}
});
全部代码如下..
public class MainActivity extends AppCompatActivity {
String message;
private TextToSpeech myTTS;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTTS = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if(myTTS.getEngines().size() == 0){
Toast.makeText(MainActivity.this,"No Engines Installed",Toast.LENGTH_LONG).show();
}else{
myTTS.setLanguage(Locale.US);
if (status == TextToSpeech.SUCCESS){
//Toast.makeText(MainActivity.this,"Status working.",Toast.LENGTH_LONG).show();
message = "How may i help you.";
}
}
}
});
myTTS.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
}
@Override
public void onDone(String utteranceId) {
Toast.makeText(MainActivity.this,"onDone working.",Toast.LENGTH_LONG).show();
}
@Override
public void onError(String utteranceId) {
}
});
}
请给出解决方案。
【问题讨论】:
标签: java android text-to-speech