为什么Android(Jelly Bean)忽略了额外的RecognizerIntent(Kõnele)?

时间:2013-11-08 02:34:05

标签: android android-intent android-4.2-jelly-bean

我安装了开源Kõnelesource code),目的是研究如何编写和注册自定义语音识别服务。作为第一步,在深入研究源代码之前,我试图验证它确实按照我的预期工作。所以,我去了我的手机System settings> Language & input> Voice recognizer并选择Kõnele作为系统的识别器:

enter image description here

然后我尝试在手机中使用麦克风选项提供键盘的各种应用程序,期待当我触摸麦克风符号时,将使用Kõnele。相反,系统总是弹出谷歌的内置语音搜索。

为什么?

我是否错过了我需要配置的其他设置(作为用户)才能使其正常工作?

这是Android操作系统的“设计”限制吗?

是否可以告诉Android始终使用不是Google语音搜索的其他RecognizerIntent?如果是这样,怎么样?

更新:我设法找到一个应用,似乎忽略了额外的RecognizerIntent:Google地图:

enter image description here

对我而言,这表明这与Android 意图解析有关。但是,为什么有些应用程序不会触发“使用”对话框完成操作,而谷歌地图呢?

1 个答案:

答案 0 :(得分:2)

我认为您已经完成了作为用户所能做的一切,但是想要使用语音识别器的应用程序当然可以忽略您的配置。例如。它可以通过构造如下的识别器来直接选择特定的语音识别器实现:

SpeechRecognizer.createSpeechRecognizer(this,
    new ComponentName("com.google",
                      "com.google.Recognizer");
);

在这种情况下,您唯一的选择是卸载或禁用此特定实现,并希望该应用程序回退到一般方法:

SpeechRecognizer.createSpeechRecognizer(this);

不幸的是,Google在某些时候开始宣传应用程序直接链接到Google语音识别器的想法(请参阅Add Voice Typing To Your IME)。现在有这么多键盘应用就是这样做的(参见例如the issue that I raised with SwiftKey),你唯一的选择就是找到一个没有...... {/ p>

也可能是应用程序发送了Kõnele不支持的意图(manifest中列出了受支持的意图),但在语音识别应用程序中支持这种意图是有意义的。在这种情况下,它将是Kõnele的功能请求。