6

私は自分のアプリ固有の 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 ストアのリンクから想定します。

4

2 に答える 2