JellyBean 4.3 中的 GoogleTTSService 的名称是啥?

Posted

技术标签:

【中文标题】JellyBean 4.3 中的 GoogleTTSService 的名称是啥?【英文标题】:What is the name of GoogleTTSService in JellyBean 4.3?JellyBean 4.3 中的 GoogleTTSService 的名称是什么? 【发布时间】:2013-10-06 18:19:38 【问题描述】:

在 4.3 之前的所有 android 版本中,属于包 android.tts.TtsService 的 Google 文本转语音服务的名称为 GoogleTTSService

因此,如果您查看运行 Android 4.2 或更低版本的设备中的运行服务列表,您会发现其中有com.google.android.tts.GoogleTTSService

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

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

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

有什么想法吗?

【问题讨论】:

How to find the package name of the TTS service in Android 4.3?的可能重复 【参考方案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 引擎上,但当然用户可以将其中一个作为默认引擎。

【讨论】:

【参考方案2】:

根据this,您可能正在使用 ACTION_CHECK_TTS_DATA Intent,该 Intent 在 Android 4.2 中未正确处理。

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

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

使用 Android TTS API 访问 Google Now voice Offline Android 中的语音识别 (JellyBean)

【讨论】:

以上是关于JellyBean 4.3 中的 GoogleTTSService 的名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Android 4.3 Jelly Bean 中的打印支持

run-as 包 'a.b.c' 未知 - Galaxy S4 Jellybean 或 Android 4.3

Jellybean 中的 Android SQLite 数据库事务/锁定更改

HTML CSS:文本不会在 Android 4.3 中水平填充 div

如何使用 4.3 API 在 Android 上连接 WPA_EAP WIFI

自 JellyBean 以来,libbinder 在哪里?