3

在 4.3 之前的所有 Android 版本中,属于 package 的 Google 文本转语音服务的名称android.tts.TtsServiceGoogleTTSService.

因此,如果您检查运行 Android 4.2 或更低版本的设备中正在运行的服务列表,您会com.google.android.tts.GoogleTTSService在其中找到。

但在 Android 4.3 中似乎发生了变化,在我正在运行的设备中列出的众多服务中,我再也找不到相应的服务名称。

新名字是什么?它是不同服务的一部分吗?

更新:似乎该服务的包名称已从2.x 中的android.tts.TtsService重命名为4.3中的android.speech.tts.TextToSpeech 。这是朝着正确方向迈出的一步,但谷歌引擎的实际名称仍然缺失。

任何想法?

4

2 回答 2

1

据此,您可能正在使用 ACTION_CHECK_TTS_DATA 意图,该意图在 Android 4.2 中未正确处理

尝试消除使用 ACTION_CHECK_TTS_DATA 意图,而我们只依赖方法TextToSpeech.isLanguageAvailable()作为是否安装语音数据的指示符。

可能与您的问题相关的其他有用信息:

于 2013-11-14T02:51:24.993 回答
1

您可以通过以下方式发现任何 TTS 引擎的包:

TextToSpeech tts = new TextToSpeech(context, onInitListener);

然后在 onInit 监听器中:

        @Override
        public void onInit(final int status) {

            switch (status) {

            case TextToSpeech.SUCCESS:

                try {

                    final String initEngine = tts.getDefaultEngine();

    // Output the engine to the log if it's != null

                } catch (final Exception e) {

                }

        break;
    }
}

根据我的经验,引擎有时会在 onInit 之后过早调用时返回 null 或崩溃,因此建议使用 try/catch 块。这只发生在某些 IVONA 和 SVOX TTS 引擎上,但当然用户可以将其中一个作为默认引擎。

于 2013-10-16T12:32:12.893 回答