9

此问题仅适用于 Android 2.2

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

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

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

在此处输入图像描述

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

在 Android 2.2中,我所拥有的只是在将Pico选为默认值并检查SVOXgetDefaultEngine()的情况下,这无济于事(换句话说,如果Pico是默认值,我怎么知道检查了SVOX?)

我如何在 Android 2.2中实现这一点?

这是可能吗?

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

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

1 回答 1

0

请参阅Android TextToSpeech API 指南

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

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

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

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

于 2012-08-22T14:37:24.520 回答