Android TTS-检查\u语音\u数据\u故障-检查发动机是否可用

Android TTS-检查\u语音\u数据\u故障-检查发动机是否可用,android,text-to-speech,Android,Text To Speech,我的TTS引擎有一个奇怪的问题,我不知道为什么/哪里出了错。为解决方案搜索了数小时,但没有任何可提及的结果 当我使用它时,一切正常,我可以听到所有安装语言的声音 但是,当我通过检查时,我得到的是作为定制TTS引擎返回码的检查语音数据失败(我需要所有必要的语言,标准的谷歌是不够的) 我错过了什么?如何检查TTS引擎的可用性? 我知道这不一定是代码问题,但对于其他程序来说,这似乎是可行的 我从安装了一些其他应用程序,这些应用程序似乎可以在我的所有设备上运行,而下面的代码失败了 例如,正在检查发动机的

我的TTS引擎有一个奇怪的问题,我不知道为什么/哪里出了错。为解决方案搜索了数小时,但没有任何可提及的结果

当我使用它时,一切正常,我可以听到所有安装语言的声音

但是,当我通过检查时,我得到的是作为定制TTS引擎返回码的检查语音数据失败(我需要所有必要的语言,标准的谷歌是不够的)

我错过了什么?如何检查TTS引擎的可用性? 我知道这不一定是代码问题,但对于其他程序来说,这似乎是可行的

我从安装了一些其他应用程序,这些应用程序似乎可以在我的所有设备上运行,而下面的代码失败了

例如,正在检查发动机的可用性,并且发动机正在工作

这里有什么不同

这是我的例外代码(这是文章的副本):


不幸的是,
可靠地初始化TextToSpeech
是复杂、异步和混乱的

为什么您的代码要检查0x99

实际上,您不需要使用
ACTION\u CHECK\u TTS\u DATA Intent
来检查语言可用性,而是使用
TextToSpeech.isLanguageAvailable

就这样。该库中的代码将帮助您开始。它可以像扩展一样简单


或者,您可以阅读中的详细信息。

这些发动机是您开发的吗?这段代码只检查默认引擎,如果没有实现它来处理检查,您可能会得到奇怪的结果。如果忽略此检查的结果(即,您是否获得语音音频),是否有效?谢谢。helper类非常有用。但有一点我仍然不清楚:这个意图是否过时了,应该只用于较旧的版本?这个意图没有过时,并且提供了关于TTS引擎的其他信息。我只是认为这不是检查语言数据最方便的方式。
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent checkIntent = new Intent();
    checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
    startActivityForResult(checkIntent, 0x99);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 0x99) {
        if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
            // success, create the TTS instance
            mTts = new TextToSpeech(this, this);
        } else {
            Log.e("TTS","Missing Data:" + resultCode );
            // missing data, install it
            Intent installIntent = new Intent();
            installIntent.setAction(
                TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(installIntent);
        }
    }
}