SpeechRecognizer,绑定识别服务失败

SpeechRecognizer, bind to recognition service failed

我在 android 上使用 SpeechRecognizer 来识别用户的声音。 它运行良好,直到卸载 Google 应用程序。 (https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox&hl=en)

我更新了 Google 应用程序,但出现 "bind to recognition service failed" 等错误。 我怎样才能使应用 运行 成功?

怎样才能正常使用SpeechRecognizer?

谢谢。

每次 Google 应用程序以某种方式更新时,语音识别器回调总是有问题。要么 Google 定期更改他们的超时条款,要么突然出现一些像你这样的奇怪问题。

您需要使您的代码动态化,即使在语音回调方法中出现错误,您也需要捕获该错误并尝试自动再次收听。这已在本 中进行了广泛讨论,并提供了大量答案供您根据需要检查和实施。

如果您不想要这个,您可以随时试用 DroidSpeech 库,它会在出现问题时处理这些语音错误问题,并为您提供连续的语音识别。

只需使用 Gradle 实现库并添加以下代码行。

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

要开始收听用户调用以下代码,

droidSpeech.startDroidSpeechRecognition();

你会在监听器方法中得到语音结果,

@Override

public void onDroidSpeechFinalResult(String finalSpeechResult, boolean droidSpeechWillListen) {

}

我知道我回答这个问题有点晚了,但我已经为这个错误苦苦挣扎了一段时间。原来您需要激活 Google 的快速搜索框。所以我使用的解决方案是:我检查 SpeechRecognizer 是否可用(使用 isRecognitionAvailable(context))。如果 SpeechRecognizer 不可用,您可以像这样激活它:

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)));
    }
}

更新清单

我正在使用 Algolia 的语音输入库,它无法在 Pixel 2 和 android 11 设备上进行语音输入。无法绑定语音识别服务的原因

为了解决这个问题,在清单文件中,将这个查询元素插入到您的开始标签下:

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