如何在Android中以编程方式安装特定的TTS引擎?

seb*_*123 6 android text-to-speech google-text-to-speech

我试图添加到我的应用程序特定的TTS引擎 - 不是基于系统,所以每个人将有另一个,但一个人.

在文档中有方法:setEngineByPackageName(),看起来它会成为我想要的.但是,在早些时候看到其他类似的问题我发现了一些使用这种方法的东西:https://stackoverflow.com/questions/12549086/selecting-required-tts-programmatically-in-android.

它看起来很不错,但它在系统检查后是否安装了TTS引擎,如果没有安装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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我想问一下在检查过程中是否有任何方法可以安装特定的tts引擎,因为现在这些方法在创建TTS之前被调用,所以你不能调用setEngineByPackageName()或带引擎设置的构造函数(取决于Android版本) ).

我正在考虑作为文本转语音扩展的引擎,据我所知,我应该使用包名:com.google.tts我从Play商店链接中假设它.

小智 1

为什么你在 onCreate 中调用 Intent ?

将安装检查例程移至讲话之前的位置