我正在尝试将特定于应用程序的 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 商店链接。