4
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 エンジンがインストールされているかどうかをプログラムで知る方法は?

4

1 に答える 1

1

余分なものを入れてみましたかTextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR

このリンクのソースコードによると、特にチェックしたい音声ロケールのパラメータを渡すことができます。

于 2012-11-05T18:49:38.387 に答える