根据this answer中的提示,我在onActivityResult()
时调用 setEngineByPackageName ,requestCode == REQ_TTS_STATUS_CHECK && TextToSpeech.Engine.CHECK_VOICE_DATA_PASS
:
tts = new TextToSpeech(this, this);
tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");
但无论我是否在文字转语音设置中选中或取消选中Always use my settings
,我都会获得 pico 默认引擎!
是的,我故意将微微引擎设置为默认引擎,以便我可以通过aforementioned tip测试覆盖它。但是那种API方法似乎根本不起作用,或者......我错过了什么?
(我知道 setEngineByPackageName 已被弃用,因为它在TTS引擎初始化时没有通知调用者,但是我需要支持API 8,所以这个方法是我唯一的选择。力矩)
答案 0 :(得分:5)
你说你在onActivityResult()
中调用了setEngineByPackageName。这是错误的地方。
setEngineByPackageName,就像getDefaultEngine一样,在到达onInit()
之前不得调用。