我正在使用Android的TextToSpeech類。一切正常。但是,有些語言/區域設置默認不安裝,但由TTS引擎支持,我無法捕獲缺少語音數據的狀態。Android TTS檢查支持的語言環境是否丟失/未下載語音數據
隨着互聯網的發展,當我嘗試將語言設置爲語音數據尚未下載的新語言環境時,它將簡單地下載語音數據並正常/成功執行說話方法。
但是,在關閉互聯網的情況下,當我嘗試將語言設置爲其語音數據尚未下載的新語言環境時,它會嘗試下載語音數據。但沒有互聯網,它只是表示在所選語言環境的「語言和輸入」下的「TTS語音數據」設置屏幕上「下載」,沒有任何進展。正如預期的那樣,由於沒有下載語音數據,所以說方法不起作用。當發生這種情況時,我會認爲TTS方法setLanguage/isLanguageAvailable會返回LANG_MISSING_DATA來捕獲這個狀態,但是,它只是返回LANG_COUNTRY_AVAILABLE。情況如下圖所示:
我希望能夠檢測到所選語言環境的語音數據何時未下載/丟失,並提供Toast消息或直接用戶下載它。我已經看到幾個帖子建議使用isLanguageAvailable像這樣使用one。我還查看了android documentation,看起來isLanguageAvailable的返回值應該用LANG_MISSING_DATA捕獲缺少語音數據的狀態。
我也嘗試發送ACTION_CHECK_TTS_DATA意圖作爲另一種檢查缺失數據的方式,正如我鏈接的Android文檔中所建議的那樣。但是,resultCode再次未捕獲/指示語音數據丟失(CHECK_VOICE_DATA_FAIL),而是返回了CHECK_VOICE_DATA_PASS。
在這種情況下,我應該如何捕獲可用/支持的語言/區域的狀態,並且缺少語音數據?我也很好奇爲什麼CHECK_VOICE_DATA_PASS和LANG_MISSING_DATA不是返回的值。當語音數據丟失時,不應該返回這些值嗎?謝謝! 以下是我嘗試在未下載語音數據的語言環境上使用setLanguage和isLanguageAvailable時的返回值(0和1是日誌中顯示的方法的返回值,-1是缺少對應的語言語音數據):
謝謝您的輸入!但是,那不是我想要的。您甚至可以使用TTS實例更有效地獲取引擎支持的所有受支持和可用的語言。無論如何,感謝您的意見! –