的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