此问题仅适用于 Android 2.2:
以下屏幕截图显示了安装的 3 个不同的文本到语音引擎:
- PIco TTS(Android 自 Froyo 2.2 起的默认设置)
- IVONA 文字转语音总部
- 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+ 解决了,但仔细检查会发现:
- getEngines()仅列出已安装,未检查(启用)的软件包。
- 每个列出的包附带的EngineInfo仅提供名称、标签、图标、优先级以及是否是系统映像的一部分。换句话说,与 Android 2.2 中的限制相同。