我正在尝试让该应用识别使用以下代码的用户所说的某些单词,但由于某种原因,它根本无法正常工作。请查看此内容,并告诉我它有什么问题。谢谢
如果说出“橙色”或“苹果”这两个词,则该应用程序只是假定显示一条吐司消息,但使用下面的代码时则什么也没有发生。
//按钮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();
}
}
}
您的问题是,当不可能时,您正在测试是否ArrayList == String(String类型的ArrayList包含多个字符串)
代替:
if ((result).equals("orange")) {}
尝试:
if ((result).contains("orange")) {}
此代码将遍历ArrayList的每个索引,并确定其任何索引是否等于“橙色”。如果有,它将返回
true
...它将执行if语句!希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句