Java Android-TTS将语言设置为Locale.getDefault在没有internet的情况下不可能?

Java Android-TTS将语言设置为Locale.getDefault在没有internet的情况下不可能?,java,android,locale,text-to-speech,Java,Android,Locale,Text To Speech,我正在尝试将我的TextToSpeech-对象的语言设置为荷兰语。这是运行应用程序的Android平板电脑的默认语言,当我登录Locale.getDefault()时,我会得到“nl\u nl”,所以这是正确的 我已经了解到,对于TTS,在使用Locale设置语言时,您需要提供ISO语言代码和ISO国家代码。但问题是:当平板电脑没有互联网连接时,TTS似乎无法将语言设置为荷兰语。以下是我设置语言的代码: int result = tts.setLanguage(new Locale(Locale

我正在尝试将我的
TextToSpeech
-对象的语言设置为荷兰语。这是运行应用程序的Android平板电脑的默认语言,当我登录
Locale.getDefault()
时,我会得到“nl\u nl”,所以这是正确的

我已经了解到,对于TTS,在使用Locale设置语言时,您需要提供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。通过互联网连接,它可以按预期工作,语言设置为荷兰语(我甚至不需要提供ISO符号,只要
新语言环境(“nl_BE”)或“nl_nl”
就可以了)

在我的代码中,当调用
TTS.speak
时,我总是检查Dutch是否为true,然后为speak方法提供一个荷兰语字符串,否则提供一个英语字符串

我如何解决这个问题,我可以设置TextToSpeech语言为荷兰语,而无需连接互联网


编辑:对于遇到我问题的其他人,请查看下面我答案的编辑部分。

经过大量研究,TTS安装的标准语言似乎不包含荷兰语。 我使用方法
isLanguageAvailable(Locale loc)
运行了一些测试,从而检查荷兰语等,似乎不支持荷兰语(返回值是
LANG\u not\u supported

我必须找到另一个TTS客户端来满足我的需要,或者播放带有正确消息的.mp3文件(这可能会起作用,因为TTS必须发出的值是预定义的)

一些帮助我的链接:



以及显示安装了哪些语言的图像:

编辑:在更新了Google Play Store的“Google TTS”应用程序后,Dutch就可以使用了。如果您正在寻找荷兰离线TTS,并且正在使用谷歌TTS,只需将其更新为最新版本。

试试看

tts.setLanguage(new Locale("nl", "NL"));

除非安装并支持荷兰语语音合成,否则无法工作。您可以通过转到Android设备的语言和输入设置,然后检查文本到语音/语音合成支持的语言来检查这一点。我的设备不支持它(可能还有很多其他设备也不支持),但是你可以通过Play Store更新你的Google TTS来安装它,所以如果你关闭互联网,它就不会说话了??这是仿真器还是真设备?我认为这是一个可怕的想法,需要一个互联网连接。它仍然可以在没有互联网连接的情况下说话,但你只能使用设备上安装的语言(以及离线时可以使用的语言)。