2013-03-14 53 views
12

某些设备(如Samsung Galaxy S3)预装了Samsung powered by Vlingo而不是Google Voice Search如何以编程方式覆盖“Vlingo支持的三星”上的“Google语音搜索”?

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

所以我的问题是:

  1. 有没有办法知道哪些语音识别发动机安装? (如果是的话,怎么样?)
  2. 有没有办法告诉哪个发言确认引擎是选择在用户设置? (如果是这样,怎么样?)
  3. 是否有编程的方式来覆盖用户的选择,这样我的应用程序总是调用Google Voice Search? (如果是的话,怎么样?)

帮助将不胜感激

+2

看起来我并不是唯一寻找解决方案的人。 [这一个](http://www.android.net/forum/introductions-site-assistance/76895-replace-vlingo-back-google-voice-search.html)无济于事。但[这一个](http://androidforums.com/samsung-galaxy-s2-international/540153-finally-remove-vlingo-voice-command-without-root-ics-only.html)似乎已成功卸载为一个用户。不过,我更喜欢通过编程方式实现我想要的功能,而无需卸载*“由Vlingo驱动的三星”*。 – 2013-03-14 03:25:49

+1

我不认为你可以这样做。三星的解决方案已经在程序上覆盖了你的:P – slezica 2013-03-14 04:51:48

回答

5

回答你所有的问题是“是”。

createSpeechRecognizer可以给出要使用的识别器的包名称。所以如果你知道包名,那么你可以覆盖默认值。

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

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

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