2017-03-01 161 views
0

我正在编写一个需要使用文本转语音(TTS)的Android应用程序。当屏幕锁定时出现Android TTS语音合成错误

tts.speak("Some text", TextToSpeech.QUEUE_ADD, null, UTT_ID); 

当屏幕打开时,这很好地工作。

如果屏幕关闭&锁定,活动将唤醒屏幕(创建时)并显示自己(有意)。这是完成与

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
       WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | 
       WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

而且这工作得很好。

但是,当活动创建并显示在屏幕关闭时......文本到语音不会产生任何声音。

看着日志,我看到

TTS  : synthesizeWithoutLoadingVoice() failed 

谷歌搜索此错误信息给什么。 任何人都知道我在这里做错了什么?

+0

如果以下答案不起作用,您需要发布您的代码 – brandall

回答

1

尝试在应用程序的onResume函数中重新创建TTS。那就是将TTS的init()函数移动到onResume()。

+0

谢谢!这工作。 事实上,初始化onResume或onCreate中的TTS引擎(对于我的用例)工作正常。 之前的问题是我创建了一个单独的TTS对象,以便在许多活动中共享。很明显,一旦某些活动暂停,对象就会失效或进入不良状态。 所以,基本上,每当新的活动进入前台时,您只需要重新初始化TTS引擎。 – thammaknot