如何以编程方式了解我的设备中是否安装了任何TTS引擎?

时间:2012-06-06 09:29:30

标签: android

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

请帮我实现此功能。

此致

皮克斯

5 个答案:

答案 0 :(得分:11)

您可以先发送结果意图进行检查

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

希望它有效:)

答案 1 :(得分:3)

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

tts = new TextToSpeech(this, this);
for (TextToSpeech.EngineInfo engines : tts.getEngines()) {
Log.d("Engine Info " , engines.toString());
}

答案 2 :(得分:2)

保存点击次数:

启动它以检查是否安装了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);
    }
}
}

答案 3 :(得分:1)

这位官方Android Blog Post为您提供了检测TTS引擎是否已安装并可以使用的最佳实践,以及TTS上的其他实践。

答案 4 :(得分:0)

要检查已安装的 TTS 引擎,您需要先初始化 TTS 引擎。然后使用返回的 TTS 引擎对象调用函数 as unknown as Immutable<SuperState[Key]> 来了解是否有任何 TTS 引擎被初始化。

很酷,说得够多了,这是有效的代码:-

getEngines()