【发布时间】:2018-07-11 15:15:52
【问题描述】:
我正在尝试在 tts 上放置一个 onUtteranceProgressListener。我已经阅读了有关 stackoverflow 的其他相关问题并关注了它们。但即使在通过 Hashmap 或 Bundle 传递话语 id 字符串(因为 Hashmap 在 api21 之后不推荐使用)之后,也不会调用 utteranceProgressListener。我用 toasts 来验证,但没有 toast 输出。我正在获取音频输出,但无法让 progressListener 对其进行处理。
@Override
public void onInit(int initStatus) {
if (initStatus == TextToSpeech.SUCCESS) {
myTTS.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
Toast.makeText(InvisibleActivity.this,"listener Started",Toast.LENGTH_SHORT).show();
}
@Override
public void onDone(String utteranceId) {
if (utteranceId.equals("utteranceId")) {
myTTS.stop();
Toast.makeText(InvisibleActivity.this,"mytts stopped",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(String utteranceId) {
}
});
myTTS.setLanguage(Locale.US);
} else if (initStatus == TextToSpeech.ERROR) {
Toast.makeText(this, "Sorry,Text To speech not supported", Toast.LENGTH_SHORT).show();
}
Bundle bundle = new Bundle();
bundle.putString(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"utteranceId");
myTTS.speak(outText, TextToSpeech.QUEUE_FLUSH, bundle,null);
chan();
}
我使用的 Hashmap 代码(带有不推荐使用的 speak())是:
HashMap<String,String> params = new HashMap<>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"utteranceId");
myTTS.speak(outText,TextToSpeech.QUEUE_FLUSH, params);
QUEUE_ADD 和 QUEUE_FLUSH 我都试过了,但结果是一样的。
【问题讨论】:
标签: java android text-to-speech