我试图让应用程序识别用户使用下面的代码说出的某些单词,但由于某种原因它根本不起作用。请检查一下,告诉我它有什么问题。谢谢
如果单词" orange"该应用程序只是假设显示一个Toast消息。或" apple"虽然说,但使用下面的代码没有任何反应。
//按钮onclick以触发RecognizerIntent
public void OnClick_Speed_Detector(View v)
{
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "speak up");
startActivityForResult(i, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == 1 && resultCode == RESULT_OK)
{
ArrayList<String> result =
data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if(((result).equals("orange")))
{
Toast.makeText(getApplicationContext(), "orange", Toast.LENGTH_LONG).show();
}
else
if (((result).equals("apple")))
{
Toast.makeText(getApplicationContext(), "apple", Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:2)
你的问题是你正在测试一个ArrayList ==一个String,当它不可能时(String类型的ArrayList包含多个字符串)
而不是:
if ((result).equals("orange")) {}
尝试:
if ((result).contains("orange")) {}
此代码将查看ArrayList的每个索引,并确定它的任何索引是否等于&#34; orange&#34;。如果有,那么它将返回
true
...它将执行if语句! 希望这有帮助!