私は自分のアプリ固有の TTS エンジンに追加しようとしています - システムベースではありません。
ドキュメントにはメソッドがあります:setEngineByPackageName()、それは私が望むものを作るように見えます。ただし、以前に他の同様の問題を調べたところ、この方法を使用して何かが見つかりました: https://stackoverflow.com/questions/12549086/selecting-required-tts-programmatically-in-android。
これは問題ないように見えますが、TTS エンジンがインストールされているかどうかをシステムがチェックした後に使用され、存在しない場合はインストールされます (定義されていません)。
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Fire off an intent to check if a TTS engine is installed
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == MY_DATA_CHECK_CODE)
{
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS)
{
// success, create the TTS instance
mTts = new TextToSpeech(this, this);
}
else
{
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
そのため、チェック中に特定の tts エンジンをインストールする方法があるかどうかを尋ねたいと思います。これらのメソッドは TTS を作成する前に呼び出されるため、setEngineByPackageName()、またはエンジン設定でコンストラクターを呼び出すことはできません (Android のバージョンによって異なります) )。
Text-To-Speech Extendedについてエンジンとして考えていたので、パッケージ名を使用する必要があることを理解しているので、com.google.tts を Play ストアのリンクから想定します。