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

时间:2012-08-22 14:07:55

标签: 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
  4. 在此屏幕截图中,您可以看到并非所有3个都已选中(已启用)。相反,IVONA未经检查,仅留下Pico(暗示,因为它是硬编码的)和SVOX(已检查)。

    enter image description here

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

    在Android 2.2 中我只有getDefaultEngine(),如果 Pico 被选为默认设置并且 SVOX <,则无法真正提供帮助检查/ em>(换句话说,如果 Pico 是默认值,我怎么知道 SVOX 被检查?)

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

    这一切都可能吗?

    PS Android 4.x(API&gt; = 14)介绍了getEngines(),这可能会让您相信ICS +已解决此问题,但仔细检查后会发现:

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

1 个答案:

答案 0 :(得分:0)

请参阅Android TextToSpeech API guide

getEngines()将列出所有已安装的引擎,并提供有关每个引擎的信息。

getDefaultEngine()将提供用户选择默认的任何引擎的包名称。

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

请注意,前一个功能仅适用于API级别14,但第二个功能可从API级别8获得。