我在 Android 上使用 SpeechRecognizer 来识别用户的声音。 在卸载 Google App 之前它运行良好。 (https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox&hl=en)
我更新了 Google App,但出现“绑定识别服务失败”等错误。 如何才能让应用程序成功运行?
如何才能正常使用SpeechRecognizer?
谢谢。
我正在使用 Algolia 的语音输入库,但它无法在 Pixel 2 和 Android 11 设备上进行语音输入。原因是无法绑定语音识别服务。
要解决此问题,请在清单文件中,将此查询元素插入到您的开始标记下:
<queries>
<package android:name="com.google.android.googlequicksearchbox"/>
</queries>
我知道我回答这个问题有点晚了,但我已经为这个错误苦苦挣扎了一段时间。原来你需要激活谷歌的快速搜索框。所以我使用的解决方案是:检查 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)));
}
}
您需要将其添加到清单中,如下所示:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
**<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>**
每次 Google 应用程序以某种方式更新时,语音识别器回调总会出现问题。要么谷歌定期更改他们的超时条款,要么像你这样的奇怪问题突然出现。
您需要使代码动态化,即使语音回调方法中存在错误,您也需要捕获该错误并尝试自动再次监听。这已经在这篇post中进行了广泛讨论,并且提供了大量答案供您根据您的要求检查和实施它们。
如果您不想要这个,您可以随时尝试DroidSpeech库,每当弹出某些内容时它都会处理这些语音错误问题,并为您提供连续的语音识别。
只需使用 Gradle 实现该库并添加以下代码行即可。
DroidSpeech droidSpeech = new DroidSpeech(this, null); droidSpeech.setOnDroidSpeechListener(this);
要开始监听用户调用以下代码,
droidSpeech.startDroidSpeechRecognition();
您将在监听器方法中获得语音结果,
@覆盖
公共无效onDroidSpeechFinalResult(字符串 FinalSpeechResult,布尔值 droidSpeechWillListen) {
}
语音识别工作正常 >= 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>
...