最让我烦恼的是;我有另一个使用不同方法的活动(使用startActivityForResult(intent ....)vs一个实现RecognitionListener的监听器类,另一个使用另一个不做的事情。我确定我做了一些愚蠢的事情。错了,但我肯定无法弄清楚是什么。
我使用onResults获取语音recog结果,使用实现RecognitionListener的侦听器类。
public void onResults(Bundle results) {
Log.d("Speech", "onResults");
ArrayList strlist = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (int i = 0; i < strlist.size(); i++) {
String matchstring = matchpair[1].toString().toLowerCase();
String speechstring = strlist.get(i).toString().toLowerCase();
Log.d("Speech", "result=" + speechstring);
if (checkResult(matchstring, speechstring)) {
System.out.println("Phonetic match: " + speechstring + " = " + matchstring);
} else System.out.println("NO match: " + speechstring + " = " + matchstring);
}
}
checkresult很简单,只是一个布尔比较:
public boolean checkResult(String result, String checkmatch) {
if (result.equals(checkmatch))
{
return true;
}
return false;
}
查看调试信息,结果出现进行比较 - 但布尔值返回false。
它让我疯了。我正在走这条路线,所以我可以使用识别功能,而不会在每次识别尝试时弹出Google对话框。在我开始的活动中,比较是完美的。我欢迎有人指出我忽略的任何非常愚蠢的事情。