我正在開發一個簡單的應用程序,它將在收到呼叫時說出聯繫人姓名或未知號碼。我正在使用broadcastReceiver
和Services
執行應用程序。如果我在emulator
上運行應用程序並使用DDMS
開始呼叫,並保存2或3個聯繫人,該應用程序正常工作,因爲onInit()
在tts.speak()
運行前被調用。等待TextToSpeech onInit()已初始化
現在,當我嘗試在我的android手機上運行相同的應用程序時,之後調用onInit
。從我所瞭解的同時尋找這個問題的答案,這是由於tts.speak()
不等待onInit
來調用。
我在這個問題上找到的一個解決方案是How to wait for TextToSpeech initialization on Android,但那也不起作用。
這個問題已被問了很多次,但我找不到工作解決方案。這個鏈接建議使用處理程序http://davidcheney.wordpress.com/2010/11/16/multitasking-in-android/,但作爲一個新手,我不知道如何實現。
從我明白我必須等到onInit
被稱爲之前我可以使用tts.speak()
但我不知道該怎麼做。
更新 我試圖打電話給onInit
外speak
功能,因爲它是要說出從其他地方來了的數據,我不想做的所有編碼中onInit
,這是行不通的。所以我改變了我的代碼,最終設法在onInit()
內運行speak()
。 雖然代碼現在正在運行,但必須有方法在onInit
之外呼叫speak()
。所以我會等待更好的答案,否則將面向同樣問題的其他人發佈我的代碼。
說出見我anwser類似的問題在這裏的http://計算器.com/questions/4141567/how-to-wait-for-texttospeech-initialization-on-android – Evaldas
請看看我在這裏發佈的解決方案。 http://stackoverflow.com/a/23786730/447558 – Milton