gpt4 book ai didi

android - 语音识别器 : not connected to recognition service

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:06 24 4
gpt4 key购买 nike

在我的应用中,我直接使用 SpeechRecognizer。我销毁了 Activity 的 SpeechRecognizer onPause 并在 onResume 方法中重新创建它,如下所示 ...

public class NoUISpeechActivity extends Activity {

protected static final String CLASS_TAG = "NoUISpeechActivity";
private SpeechRecognizer sr;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_no_uispeech);

sr = getSpeechRecognizer();
}

@Override
protected void onPause() {

Log.i(CLASS_TAG, "on pause called");
if(sr!=null){
sr.stopListening();
sr.cancel();
sr.destroy();

}

super.onPause();
}


@Override
protected void onResume() {

Log.i(CLASS_TAG, "on resume called");

sr = getSpeechRecognizer();

super.onResume();
}

....

private SpeechRecognizer getSpeechRecognizer() {
if(sr == null){
sr = SpeechRecognizer.createSpeechRecognizer(getApplicationContext());
CustomRecognizerListner listner = new CustomRecognizerListner();
listner.setOnListeningCallback(new OnListeningCallbackImp());
sr.setRecognitionListener(listner);
}
return sr;
}
}

当第一次通过 eclipse 安装应用程序时,会调用 SpeechRecognition 服务并正确进行识别。但是当应用程序从暂停状态恢复时,如果我尝试识别语音,我会收到“SpeechRecognition:未连接到识别服务”错误

我做错了什么?

最佳答案

我找到了问题的原因。在 onPause 方法中虽然调用了 SpeechRecognition.destroy() 方法,但我猜它只是分离服务,但对象 sr 将指向一些实例,它不会为空。将对象 sr 重置为 null 可以解决问题。

不在onPause 方法中销毁SpeechRecognition 对象会阻止其他应用使用SpeechRecognition 服务

@Override
protected void onPause() {

Log.i(CLASS_TAG, "on pause called");
if(sr!=null){
sr.stopListening();
sr.cancel();
sr.destroy();

}
sr = null;

super.onPause();
}

关于android - 语音识别器 : not connected to recognition service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13227105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com