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();
}
}
}
皆さん、上記のコードは、OS Default language == TTS installed language の場合にのみ機能します。それらが異なる場合は、ACTION_INSTALL_TTS_DATAに分岐します。明らかに、チェックする必要がある言語データを指定するTextToSpeech.Engine.ACTION_CHECK_TTS_DATAの追加データである必要がありますが、見つかりません。
次のシナリオは、ユーザーが既定の OS 言語として英語を使用してフランス語-ドイツ語辞書などを実行すると発生します。
シナリオ: SVOX + ドイツ語、フランス語の言語がインストールされています。デフォルトの言語は英語または他の言語に設定されています。キーはドイツ語でもフランス語でもありませんTextToSpeech.Engine.ACTION_CHECK_TTS_DATAはSVOXで英語の存在をチェックし、 CHECK_VOICE_DATA_FAIL で戻ってくるようです。言語がドイツ語に設定されている場合、結果はCHECK_VOICE_DATA_PASSになります
同様の質問がありますが、答えようとしている人は質問を完全に理解していないようです。 デバイスに TTS エンジンがインストールされているかどうかをプログラムで知る方法は?