使用 Intent (TextToSpeech.Engine.ACTION_CHECK_TTS_DATA) 我相信您正在尝试检查设备上是否安装了 TTS 数据。顺便说一句,如果未安装,这将检查默认设备语言,它会将resultCode作为TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA onActivityResult() 提供。
请在下面找到初始化 TTS 和处理错误的正确方法。
system = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
system.setRecognitionListener(this);
speech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
result = speech.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not available, attempting download");
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
else {
Log.e("TTS", "Initialization Failed!");
}
}
}, "com.google.android.tts");
请注意这里的3点:
- 包名称为“com.google.android.tts”以使用 Google Text To Speech。
- 您不需要检查意图“ACTION_CHECK_TTS_DATA”,这将在onInit()中处理。
- Text to Speech setlanguage 是一项昂贵的操作,它会冻结 UI 线程;如果您想使用默认语言,请将其删除。
使用此方法,您将不会收到任何对话框弹出窗口,并且 tts 将被初始化。让我知道它是否有帮助!