【问题标题】:Why does Android (Jelly Bean) ignore an additional RecognizerIntent (Kõnele)?为什么 Android (Jelly Bean) 会忽略额外的 RecognizerIntent (Kõnele)?
【发布时间】:2013-11-08 02:34:05
【问题描述】:

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

然后我在手机中尝试了各种应用程序,这些应用程序显示带有麦克风选项的键盘,期望当我触摸麦克风符号时,会使用 Kõnele。然而,系统总是弹出谷歌内置的语音搜索。

这是为什么呢?

我是否遗漏了我需要(作为用户)配置的其他设置才能完成这项工作?

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

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

更新:我设法找到一个应用似乎不会忽略额外的 RecognizerIntent:谷歌地图:

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

【问题讨论】:

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


    【解决方案1】:

    我认为您作为用户已经做了所有可以做的事情,但是想要使用语音识别器的应用当然可以随意忽略您的配置。例如。它可以通过构造类似这样的识别器来直接选择特定的语音识别器实现:

    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),而您唯一的选择就是找到一个不这样做的应用程序......

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

    【讨论】:

      猜你喜欢
      • 2019-10-01
      • 2012-10-26
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多