【发布时间】:2016-04-21 18:16:41
【问题描述】:
我正在尝试将我的 TextToSpeech-object 的语言设置为荷兰语。这是运行应用程序的 Android 平板电脑的默认语言,当我登录 Locale.getDefault() 时,我得到“nl_NL”,所以这是正确的。
我了解到,对于 TTS,您需要在使用区域设置设置语言时提供 ISO 语言代码和 ISO 国家代码。但问题是:当平板电脑没有互联网连接时,TTS 似乎无法将语言设置为荷兰语。这是我设置语言的代码:
int result = tts.setLanguage(new Locale(Locale.getDefault().getISO3Language(),
Locale.getDefault().getISO3Country()));
// this equals to "nld","NLD"
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED)
{
tts.setLanguage(Locale.UK);
}else{
dutch = true;
}
在没有 Internet 连接的情况下,语言始终设置为 Locale.UK。通过 Internet 连接,它可以按预期工作,并且语言设置为荷兰语(我什至不必提供 ISO 表示法,只需 new Locale("nl_BE") or "nl_NL" 即可)。
在我的代码中,当调用TTS.speak 时,我总是检查荷兰语是否为真,然后为 speak 方法提供荷兰语字符串,否则提供英语字符串。
如何解决这个问题,我可以在没有 Internet 连接的情况下将 TextToSpeech 语言设置为荷兰语?
编辑:对于遇到我的问题的其他人,请查看下面我的答案的编辑部分。
【问题讨论】:
-
所以如果你关闭网络,它就不会说话了??这是模拟器还是真机?我认为需要互联网连接是一个糟糕的主意。
-
它在没有互联网连接的情况下仍然会说话,但您只能使用设备上安装的语言(并且可以在离线时使用)。
标签: java android locale text-to-speech