Android 如何判断特定的TTS引擎是否已检查(启用)?
此问题仅适用于Android2.2: 以下屏幕截图显示了安装的3种不同的文本到语音引擎:Android 如何判断特定的TTS引擎是否已检查(启用)?,android,text-to-speech,android-2.2-froyo,Android,Text To Speech,Android 2.2 Froyo,此问题仅适用于Android2.2: 以下屏幕截图显示了安装的3种不同的文本到语音引擎: PIco TTS(Android在Froyo 2.2上的默认设置) IVONA文本到语音HQ SVOX经典TTS 在这个屏幕截图中,您可以看到并不是所有3个都被选中(启用)。相反,IVONA被取消选中,只剩下Pico(隐含,因为它是硬编码的)和SVOX(选中) 我希望能够通过编程从我的应用程序中查询特定的TTS引擎(例如IVONA)是否为(当然,假设我在编码时知道它们的包名) 在Android2.2中,我
getDefaultEngine()
,这在选择Pico作为默认值并选中SVOX的情况下真的没有帮助(换句话说,如果Pico是默认值,我如何知道SVOX被选中?)
我如何在Android2.2中实现这一点
这有可能吗
p.S.Android 4.x(API>=14)的引入可能会让您相信ICS+解决了这个问题,但仔细检查发现:
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,但由于缺乏其他答案,我接受你的答案。