2012-08-04 14 views
3
Intent intent = new Intent(); 
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
startActivityForResult(intent, 0); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if(requestCode == 0){ 
if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){ 
Toast.makeText(getApplicationContext(),"Already Installed", Toast.LENGTH_LONG).show(); 
} else { 
Intent installIntent = new Intent(); 
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
startActivity(installIntent); 
Toast.makeText(getApplicationContext(),"Installed Now", Toast.LENGTH_LONG).show(); 
} 
} 
} 

夥計, 以上代碼僅適用於操作系統默認語言== TTS安裝語言。 如果它們不同,它將分支到ACTION_INSTALL_TTS_DATA。 顯然,它應該是TextToSpeech.Engine.ACTION_CHECK_TTS_DATA的附加數據,用於指定需要檢查哪些語言數據,但我無法找到它。對於非默認語言,2.1中使用TextToSpeech.Engine.ACTION_CHECK_TTS_DATA的正確方法是什麼?

當用戶使用英語作爲默認操作系統語言運行類似法語 - 德語字典的東西時,會出現以下情景。

場景: 安裝SVOX +德語,法語。 默認語言設置爲英語或其他語言。 這不是德國的關鍵或法語 它看起來像TextToSpeech.Engine.ACTION_CHECK_TTS_DATA您在SVOX英語語言的存在,並與CHECK_VOICE_DATA_FAIL回來。 如果語言設置爲德語的結果將是CHECK_VOICE_DATA_PASS

有類似的問題,但它看起來像人們試圖回答不完全理解的問題。 how to get to know programmatically whether any TTS engine installed in my device or not?

回答

1

您是否嘗試過將獲得額外的TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR

根據源代碼中this link,它將使你傳遞你特別要檢查語音語言環境的參數。

相關問題