8

我想知道如何以编程方式获取设备的 TTS 引擎信息,例如是否安装了任何 TTS 引擎,如果安装了,那么这些是什么以及每个 TTS 引擎支持的不同语言是什么?我必须使用 Android 版本 2.1(api 级别 7)来实现这一点。

请帮我实现这个功能。

问候,

皮克斯

4

5 回答 5

14

您可以通过首先发送结果意图来检查它

Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, 0);

然后您可以在 onActivityResult 方法中检查是否安装了 TTS 引擎:

@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();
}

希望它有效:)

于 2012-06-06T10:04:55.070 回答
6

这为您提供了安装在您的 Android 上的 TTS 引擎的列表。

tts = new TextToSpeech(this, this);
for (TextToSpeech.EngineInfo engines : tts.getEngines()) {
Log.d("Engine Info " , engines.toString());
}
于 2015-09-15T21:57:51.243 回答
3

要保存您的点击次数:

启动它以检查是否安装了 TTS:

Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);

然后得到这个结果:

private TextToSpeech mTts;
protected 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);
    }
}
}
于 2012-06-06T10:01:57.450 回答
2

这篇官方的Android 博客文章为您提供了检测 TTS 引擎是否已安装并准备好使用的最佳实践,以及有关 TTS 的其他实践。

于 2012-06-06T09:46:04.260 回答
0

要检查已安装的 TTS 引擎,您需要首先初始化 TTS 引擎。然后使用返回的 TTS 引擎对象调用该函数getEngines()以了解是否有任何 TTS 引擎被初始化。

很酷,足够的谈话,这是有效的代码: -

    fun initializeEngine(context: Context) {
        tts = TextToSpeech(context){ initStatus ->
            if (initStatus == TextToSpeech.SUCCESS) {
             // TTS engine initialized successfully
            }
        }
    }

   fun supportedEnginesList(): List<TextToSpeech.EngineInfo>?{
      return tts?.engines?
   }
于 2021-04-02T12:20:20.827 回答