此问题仅适用于 Android 2.2:
以下屏幕截图显示了安装的 3 个不同的文本转语音引擎:
- PIco TTS(Android 从 Froyo 2.2 开始的默认设置)
- IVONA 文本转语音总部
- 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+ 解决,但仔细检查会发现:
- getEngines()仅列出已安装,而不是已检查(已启用)包。
- EngineInfo每个列出的软件包附带的仅提供名称、标签、图标、优先级以及它是否是系统图像的一部分。换句话说,与 Android 2.2 中的限制相同。
最佳答案
参见 Android TextToSpeech API guide
getEngines()
将给出所有已安装引擎的列表,以及每个引擎的一些信息。
getDefaultEngine()
将提供用户选择的默认引擎的包名称。
将每个引擎的包名称(或您预先拥有的列表)与默认引擎的包名称进行比较,您将能够看到选择了哪个。
请注意,前一个函数仅在 API 级别 14 中可用,而第二个函数在 API 级别 8 中可用。
关于android - 如何判断特定的 TTS 引擎是否被选中(启用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12074981/