13

某些设备(如三星 Galaxy S3)预装了由 Vlingo 驱动的三星,而不是谷歌语音搜索

在我的应用程序中,我想以编程方式覆盖要使用的语音识别引擎,以便我的应用程序始终使用 Google 语音搜索。

所以我的问题是:

  1. 有没有办法知道安装了哪些语音识别引擎?(如果有,怎么做?)
  2. 有没有办法判断在用户设置中选择了哪个语音识别引擎?(如果有,怎么做?)
  3. 是否有一种编程方式来覆盖用户的选择,以便我的应用程序始终调用Google Voice Search?(如果是这样,如何?)

帮助将不胜感激

4

1 回答 1

6

您所有问题的答案都是“是”。

createSpeechRecognizer可以指定要使用的识别器的包名。因此,如果您知道包名称,那么您可以覆盖默认值。

要检测可用服务,请使用:

List<ResolveInfo> services =
    getPackageManager().queryIntentServices(
        new Intent(RecognitionService.SERVICE_INTERFACE), 0);

有关更多详细信息,请研究Babble的源代码。我不知道这是否是最好的方法(欢迎任何反馈),但它已在我的设备上运行。(Babble 通常假设 Android 4+,但语音识别器检测部分也可能适用于早期版本。)

于 2013-03-14T16:43:02.320 回答