4
Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, 0);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 0){
if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
Toast.makeText(getApplicationContext(),"Already Installed", Toast.LENGTH_LONG).show();
} else {
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
Toast.makeText(getApplicationContext(),"Installed Now", Toast.LENGTH_LONG).show();
}
}
}

伙计们,上面的代码只有在OS Default language == TTS installed language时才有效。如果它们不同,它会分支到ACTION_INSTALL_TTS_DATA。显然,应该是TextToSpeech.Engine.ACTION_CHECK_TTS_DATA的附加数据来指定需要检查哪些语言数据,但我找不到。

当用户以英语作为默认操作系统语言运行法语 - 德语词典之类的东西时,会出现以下场景。

场景:SVOX + 德语、法语已安装。默认语言设置为英语或其他语言。关键不是德语或法语它看起来像TextToSpeech.Engine.ACTION_CHECK_TTS_DATA检查 SVOX 中是否存在英语并返回CHECK_VOICE_DATA_FAIL。如果语言设置为德语,则结果将为CHECK_VOICE_DATA_PASS

有类似的问题,但看起来试图回答的人并不完全理解问题。 如何以编程方式了解我的设备中是否安装了任何 TTS 引擎?

4

1 回答 1

1

你试过把额外的TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR

根据此链接中的源代码,它将使您能够传递您特别想检查的语音语言环境参数。

于 2012-11-05T18:49:38.387 回答