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

标签 android text-to-speech android-2.2-froyo

此问题仅适用于 Android 2.2:

以下屏幕截图显示了安装的 3 个不同的文本转语音引擎:

  1. PIco TTS(Android 从 Froyo 2.2 开始的默认设置)
  2. IVONA 文本转语音总部
  3. SVOX 经典 TTS

在此屏幕截图中,您可以看到并非所有 3 个都被选中(启用)。相反,IVONA 未选中,仅留下 Pico(暗示,因为它是硬编码的)和 SVOX(选中)。

enter image description here

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

在 Android 2.2 中,我所拥有的只是 getDefaultEngine(),这在 Pico 被选为默认值的情况下并没有什么帮助SVOX 已选中(换句话说,如果 Pico 是默认设置,我怎么知道 SVOX 已选中?)

我如何在 Android 2.2 中实现这一点?

这有可能吗?

P.S. Android 4.x (API >= 14) 引入 getEngines()这可能会让您相信这个问题已针对 ICS+ 解决,但仔细检查会发现:

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

最佳答案

参见 Android TextToSpeech API guide

getEngines() 将给出所有已安装引擎的列表,以及每个引擎的一些信息。

getDefaultEngine() 将提供用户选择的默认引擎的包名称。

将每个引擎的包名称(或您预先拥有的列表)与默认引擎的包名称进行比较,您将能够看到选择了哪个。

请注意,前一个函数仅在 API 级别 14 中可用,而第二个函数在 API 级别 8 中可用。

关于android - 如何判断特定的 TTS 引擎是否被选中(启用)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12074981/

相关文章:

java - Android 一个用于多个按钮的 OnClick 方法?

java - setStreamMute(STREAM_RING) 静音文本转语音 android

Android 2.2 平板相机问题

android - 我如何使用 Android AccountManager 注销

c# - Xamarin.Forms AdMob "Missing AdActivity"

Android 越南语文字转语音?

android - 如何支持在 eclipse 中支持旧的 android 版本

android - 有些Android SDK 组件不想安装。为什么?

android - 如何在android中建立蓝牙连接?

android - 如何防止 TextToSpeech 在旋转过程中停止