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 的名称是啥?的主要内容,如果未能解决你的问题,请参考以下文章
run-as 包 'a.b.c' 未知 - Galaxy S4 Jellybean 或 Android 4.3
Jellybean 中的 Android SQLite 数据库事务/锁定更改
HTML CSS:文本不会在 Android 4.3 中水平填充 div