Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何判断特定的TTS引擎是否已检查(启用)?_Android_Text To Speech_Android 2.2 Froyo - Fatal编程技术网

Android 如何判断特定的TTS引擎是否已检查(启用)?

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中,我

此问题仅适用于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+解决了这个问题,但仔细检查发现:

  • 仅列出已安装的未选中的(已启用)软件包
  • 每个列出的软件包附带的仅提供名称、标签、图标、优先级以及它是否是系统映像的一部分。换句话说,与Android 2.2中的限制相同
  • 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,但由于缺乏其他答案,我接受你的答案。