我正在开发一个简单的应用程序,它会在接到电话时说出联系人姓名或未知号码。我正在使用broadcastReceiver
and实现应用程序Services
。如果我运行该应用程序emulator
并使用 开始通话DDMS
,并保存 2 或 3 个联系人,则该应用程序运行良好,因为在运行onInit()
之前被调用tts.speak()
。
现在,当我尝试在我的 android 手机上运行相同的应用程序时,onInit
在tts.speak()
. 根据我在寻找这个问题的答案时的理解,这是由于tts.speak()
没有等待onInit
被调用而发生的。
我在这个问题上找到的一个解决方案是关于如何在 Android 上等待 TextToSpeech 初始化,但这也不起作用。
这个问题被问了很多次,但我找不到有效的解决方案。此链接建议使用处理程序http://davidcheney.wordpress.com/2010/11/16/multitasking-in-android/但作为新手我不知道如何实现它。
据我了解,我必须等到onInit
被调用才能使用tts.speak()
,但我不知道该怎么做。
更新
我试图在speak
外部调用函数,onInit
因为要说的数据来自其他地方,我不想在其中进行所有编码onInit
,这不起作用。所以我改变了我的代码,最后以某种方式设法在speak()
里面运行它onInit()
。虽然现在代码是在运行但是一定有办法在speak()
外面调用onInit
。因此,我将等待更好的答案,否则将我的代码发布给面临同样问题的其他人。