1

我试图让应用程序使用下面的代码识别用户所说的某些单词,但由于某种原因它根本不起作用。请查看此内容并告诉我它有什么问题。谢谢

如果说出“orange”或“apple”的话,该应用程序只是假设显示一条吐司消息,但使用下面的代码时没有任何反应。

//按钮onclick触发识别器意图

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();   
                }

    }
}
4

1 回答 1

2

您的问题是您正在测试一个 ArrayList == 一个字符串,而它不可能(String 类型的 ArrayList 包含多个字符串)

代替:

if ((result).equals("orange")) {}

尝试:

if ((result).contains("orange")) {}

此代码将查看 ArrayList 的每个索引并确定它的任何索引是否等于“橙色”。如果有的话,它会返回

true

...它会执行 if 语句!希望这可以帮助!

于 2014-11-30T05:05:10.710 回答