我正在使用以下代码段记录当前电话上所有可用(和不可用)的声音:
ArrayList<String> availableVoices = intent.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
String availStr = "";
for (String lang : availableVoices)
availStr += (lang + ", ");
Log.i(String.valueOf(availableVoices.size()) + " available langs: ", availStr);
ArrayList<String> unavailableVoices = intent.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES);
String unavailStr = "";
for (String lang : unavailableVoices)
unavailStr += (lang + ", ");
Log.w(String.valueOf(unavailableVoices.size()) + " unavailable langs: ", unavailStr);
记录的结果有些令人困惑,因为我非常确定我安装了多种语言,我什至可以听到TTS 在说话eng-USA
,但日志显示:
1 个可用语言:eng-GBR,
30 种不可用的语言:ara-XXX、ces-CZE、dan-DNK、deu-DEU、ell-GRC、eng-AUS、eng-GBR、eng-USA、spa-ESP、spa-MEX、fin-FIN、fra- CAN, fra-FRA, hun-HUN, ita-ITA, jpn-JPN, kor-KOR, nld-NLD, nor-NOR, pol-POL, por-BRA, por-PRT, rus-RUS, slk-SVK, swe-SWE, tur-TUR, zho-HKG, zho-CHN, zho-TWN, tha-THA,
为什么这种不一致的行为?(请注意,eng-GBR 出现在可用和不可用列表中......)