语音识别器,绑定识别服务失败。

5

1
解决方案在这里:https://dev59.com/81IG5IYBdhLWcg3wjBMU - GuilhE
这个 答案 对解决这个错误有帮助。 - hobbydev
4个回答

15

更新清单

我正在使用Algolia的语音输入库,但它无法在Pixel 2和安卓11设备上接受语音输入。原因是无法绑定到语音识别服务。

要解决此问题,在清单文件中,在你的​开放标签下方插入此查询元素:

<queries>
        <package android:name="com.google.android.googlequicksearchbox"/>
</queries>

1
谢谢!在2021年仍然适用,你的回复是唯一解决Pixel 3a问题的方法。 - ARA1307
1
这个答案应该是正确的解决方案。谢谢伙计。 - Lasitha Lakmal
2
按意图过滤也可以工作 <queries> <intent> <action android:name="android.speech.RecognitionService" /> </intent> </queries> - catteneo
3
还有谁认为这种情况特别疯狂、荒唐且激怒人心,因为在与SpeechRecognizer相关的任何文档中都找不到任何提示?现在已经是2021年了,仍然是一片空白。 - Richard Onslow Roper

2

我知道我回答有点晚,但是我已经困扰了一段时间这个错误。事实证明,您需要激活Google的快速搜索框。所以我使用的解决方案是:检查是否可用语音识别器(使用 isRecognitionAvailable(context))。如果语音识别器不可用,您可以像这样激活它:

if(!SpeechRecognizer.isRecognitionAvailable(mainActivity)){
    String appPackageName = "com.google.android.googlequicksearchbox";
    try {
        mainActivity.startActivity(new Intent(Intent.ACTION_VIEW,
            Uri.parse("market://details?id=" + appPackageName)));
    } catch (android.content.ActivityNotFoundException anfe) {
        mainActivity.startActivity(new Intent(Intent.ACTION_VIEW,
            Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
    }
}

对我没有用,只是打开了一个带有Google应用程序的PlayStore页面。将“queries”添加到清单中(请参见上文)解决了Pixel 3a上的问题。 - ARA1307
@ARA1307 我认为正确的解决方案是将这两个解决方案结合起来,因为有些客户在他们的设备上没有安装/启用谷歌快速搜索框(仅通过向清单添加“查询”无法解决此问题)。不管怎样,很高兴另一个解决方案对你有用 :) - Khaled Abdrabo

1

你需要在清单文件中添加以下内容:

  <uses-permission android:name="android.permission.RECORD_AUDIO" />
**<queries>
    <intent>
        <action android:name="android.speech.RecognitionService" />
    </intent>
</queries>**

0
每次 Google 应用程序更新时,语音识别器回调总会出现问题。要么是 Google 定期更改超时条款,要么是像你这样的奇怪问题突然出现。
您需要使代码具有动态性,即使在语音回调方法中出现错误,也需要捕获该错误并自动尝试重新监听。这已经在此帖子中广泛讨论,并提供了大量答案供您根据需求检查和实施。
如果您不想这样做,您可以随时尝试使用 DroidSpeech 库,该库会在出现任何问题时处理这些语音错误问题,并为您提供连续的语音识别。
只需使用 Gradle 实现库并添加以下代码行即可。

DroidSpeech droidSpeech = new DroidSpeech(this, null); droidSpeech.setOnDroidSpeechListener(this);

要开始听取用户,请调用下面的代码。

droidSpeech.startDroidSpeechRecognition();

在监听器方法中,您将获得语音结果:

@Override

public void onDroidSpeechFinalResult(String finalSpeechResult, boolean droidSpeechWillListen) {

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接