离在线融合包语音识别开始后
speechRecognizer.startListening(intent);
一直无法进入onReadyForSpeech()回调函数,,并且当我再次调用
speechRecognizer.startListening(intent);开启时,就返回给我
case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
sb.append("引擎忙");
这是为什么啊!已经被问题卡了一天了,求救
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
楼上正解!
之所以报引擎忙,是因为上一次会话未结束。如:onResult或onError均未回调就再次开始调用startListening一定会引擎忙
你可以看下startListening里面的源码,那是安卓系统的代码,不是百度写的,所以要优化你需要找出startListening方法里面为什么会出现消息冲突或者返回值错误问题,我个人经验是,因为这个里面写了些线程相关的事务,会出现锁和成员变量值被多次初始化问题,由于是系统源码我们是改不了的,只有满足系统需求的调用请求才能被正确执行,我想你可能是用的同一个意图调用startListening才会返回引擎忙,
private int restartflag=-1;private void restart(String erro) {
restartflag++;
Intent intent=new Intent();
if (erro!=null&&erro.equals("引擎忙")) {
intent = new Intent("com.baidu.action.RECOGNIZE_SPEECH");
intent.putExtra("restartflag",restartflag );
}
speechRecognizer.startListening(intent);
}
在异常返回最后加上这段代码试试
识别引擎只能单任务工作,一次只能处理一个会话,会话的开始于startListening,结束于onResults/onError回调,再次期间再次调用startListening会反馈引擎忙