次のスニペットを使用して、現在電話で使用可能な(および使用できない)すべての音声をログに記録しています。
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は利用可能なリストと利用できないリストの両方に表示されることに注意してください...)