如何判断一个特定的TTS引擎是否被选中(启用)?

这个问题只涉及Android 2.2

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

  1. PIco TTS(Android默认为Froyo 2.2)
  2. IVONA文本到语音HQ
  3. SVOX经典TTS

在这个屏幕截图中,你可以看到并不是所有的3都被选中(启用)。 相反,IVONA没有被检查,只剩下微微(暗示,因为它是硬编码的)和SVOX(检查)。

在这里输入图像说明

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

在Android 2.2中,我所拥有的是getDefaultEngine() ,在Pico被选为缺省并检查SVOX的情况下(换句话说,如果Pico是默认的,我怎么知道SVOX被选中了?

我如何在Android 2.2中实现

这是可能吗?

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

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

Solutions Collecting From Web of "如何判断一个特定的TTS引擎是否被选中(启用)?"

请参阅Android TextToSpeech API指南

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

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

比较每个引擎的软件包名称(或预先列出的列表)与默认引擎的软件包名称,您将能够看到select哪个引擎。

请注意,前者的function只能从API级别14获得,尽pipe第二个级别可从API级别8获得。