如何判断是否检查(启用)特定的TTS引擎?

an0*_*00b 9 android text-to-speech android-2.2-froyo

此问题仅适用于Android 2.2:

以下屏幕截图显示了安装的3种不同的文本到语音引擎:

  1. PIco TTS(截至Froyo 2.2的Android默认版本)
  2. IVONA文字转语音总部
  3. SVOX Classic TTS

在此屏幕截图中,您可以看到并非所有3都已选中(已启用).相反,IVONA未经检查,仅留下Pico(暗示,因为它是硬编码的)和SVOX(已检查).

在此输入图像描述

我希望能够以编程方式从我的应用程序查询特定的TTS引擎(如IVONA)是否被选中(假设我知道在编码时的包名,当然).

在安卓2.2所有我是getDefaultEngine()不能在一个情况下真正帮助被选定为默认和SVOX检查(换句话说,我怎么知道SVOX如果被选中的Pico是默认?)

如何在Android 2.2中实现这一目标?

这是可能吗?

PS Android 4.x(API> = 14)引入了getEngines(),这可能会让您相信ICS +已经解决了这个问题,但仔细研究后发现:

  1. getEngines()仅列出已安装但未检查(已启用)的软件包.
  2. 每个列出的包附带的EngineInfo仅提供名称,标签,图标,优先级以及它是否是系统映像的一部分.换句话说,与Android 2.2中的限制相同.

hca*_*ver 0

请参阅Android TextToSpeech API 指南

getEngines()将给出所有已安装引擎的列表,以及每个引擎的一些信息。

getDefaultEngine()将给出用户选择的默认引擎的包名称。

将每个引擎的包名称(或预先拥有的列表)与默认引擎的包名称进行比较,您将能够看到选择了哪个。

请注意,前一个函数仅在 API 级别 14 中可用,而第二个函数在 API 级别 8 中可用。

  • 将来,请在评论中说您正在编辑一个问题 - 我的答案刚刚被否决,我猜这是因为问题现在说了答案中的所有内容。我在 android 文档中看不到任何有关 API 8 检查引擎的信息,所以我认为这可能是不可能的。 (2认同)