的official介绍文本到语音Android中说:“在创建活动中,良好的第一步是检查的TTS资源的存在与相应的意图:”为什么ACTION_CHECK_TTS_DATA意图“尴尬地使用”?
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
但@ gregm在this thread表明并非如此:
另外,不要使用ACTION_CHECK_TTS_DATA意图,这是尴尬 使用。
相反,做到以下几点:
- 创建文字转语音
- 的OnInit,检查isLanguageAvailable()如果是,您的应用程序是所有设置。如果不是,发送ACTION_INSTALL_TTS_DATA
如果我理解正确的话,@gregm做什么/顾名思义就是延迟的TextToSpeech.LANG_MISSING_DATA
检查从onActivityResult()
到onInit()
。
为什么这比formal方法更好?
为什么ACTION_CHECK_TTS_DATA如此“难以使用”?
谢谢!在获得您的许可的情况下,我强调了**为什么会增加额外的复杂性?**这实质上是答案的关键。我想确保我不会错过那些会使应用程序无法正常工作的问题,如果采用“正式”方法。 +1和接受。 – an00b 2012-07-19 23:03:33
你好,我使用isLanguageAvailable进行了测试,但它没有给出所需的结果。例如,韩语的语音数据没有安装。然而,当我没有下载时调用韩语语音数据上的isLanguageAvailable,它只是返回LANG_COUNTRY_AVAILABLE,这也是正确的。只有语音数据尚未下载,语言环境才可用于引擎。但是,由于这个原因,我无法检查是否下载语音数据,因为我从来没有收到过LANG_MISSING_DATA。该解决方案不再适用?谢谢! – 2017-06-18 16:00:52
要添加到它,LANG_COUNTRY_AVAILABLE并不表示语音数据已下载,它只是表明它支持并且可以下载。 – 2017-06-18 16:03:12