【问题标题】:How to tell whether a specific TTS engine is checked (enabled)?如何判断是否检查(启用)特定的 TTS 引擎?
【发布时间】:2012-08-17 23:40:11
【问题描述】:

此问题仅适用于 Android 2.2

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

  1. PIco TTS(Android 自 Froyo 2.2 起的默认设置)
  2. IVONA 文本转语音总部
  3. SVOX 经典 TTS

在此屏幕截图中,您可以看到并非所有 3 个都被选中(启用)。相反,IVONA 未选中,只留下 Pico(隐含,因为它是硬编码的)和 SVOX(选中)。

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

在 Android 2.2 中,我只有 getDefaultEngine() 在默认选择 Pico 并且 SVOX 被选中(换句话说,如果 Pico 是默认值,我怎么知道 SVOX 被选中?)

我如何在 Android 2.2 中做到这一点?

这可能吗?

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

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

【问题讨论】:

    标签: android text-to-speech android-2.2-froyo


    【解决方案1】:

    Android TextToSpeech API guide

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

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

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

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

    【讨论】:

    • 抱歉,我忘了强调我正在寻找一个兼容 Android 2.2 的解决方案。正如您正确指出的,getEngines() 仅适用于 API 14。getDefaultEngine() 在默认选择 Pico 并选中 SVOX 的情况下无济于事.如果 Pico 是默认设置,我怎么知道是否检查了 SVOX
    • 以后,请在评论中说您正在编辑一个问题 - 我的回答刚刚被否决,我猜这是因为问题现在说明了答案中的所有内容。我在 android 文档中看不到任何关于 API 8 检查引擎的信息,所以我认为这可能是不可能的。
    • 很抱歉。恕我直言,您应该删除此答案,因为 getEngines()getDefaultEngine() 都无法帮助判断特定 TTS 引擎是否已检查。最好不要回答这个问题,这样人们就会知道不可能判断一个特定的 TTS 引擎是否被检查。为您的评论 +1。
    • 顺便说一句,即使在 ICS+ (4.x) getEngines() 中也只返回已安装 TTS 引擎的列表。 “已安装”与启用(选中)不同。
    • 但是...在 ICS+ (4.x) 中安装总是意味着启用。剩下的唯一问题是 2.2,但由于缺乏其他答案,我接受了你的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    相关资源
    最近更新 更多