SpeechRecognizer,绑定识别服务失败

问题描述 投票:0回答:5

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

我更新了 Google App,但出现“绑定识别服务失败”等错误。 如何才能让应用程序成功运行?

如何才能正常使用SpeechRecognizer?

谢谢。

android speech-recognition bindservice
5个回答
15
投票

更新清单

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

要解决此问题,请在清单文件中,将此查询元素插入到您的开始标记下:

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

2
投票

我知道我回答这个问题有点晚了,但我已经为这个错误苦苦挣扎了一段时间。原来你需要激活谷歌的快速搜索框。所以我使用的解决方案是:检查 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)));
    }
}

1
投票

您需要将其添加到清单中,如下所示:

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

0
投票

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

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

如果您不想要这个,您可以随时尝试DroidSpeech库,每当弹出某些内容时它都会处理这些语音错误问题,并为您提供连续的语音识别。

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

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

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

droidSpeech.startDroidSpeechRecognition();

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

@覆盖

公共无效onDroidSpeechFinalResult(字符串 FinalSpeechResult,布尔值 droidSpeechWillListen) {

}


0
投票

语音识别工作正常 >= Android 10,但现在如果您想在 Android 10+ 上使用它,您必须在清单开始标记中声明 Google 快速搜索框查询。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<queries>
    <package android:name="com.google.android.googlequicksearchbox"/>
</queries>

...

© www.soinside.com 2019 - 2024. All rights reserved.