Android特定词语音识别

时间:2014-11-30 02:22:37

标签: android speech-recognition recognizer-intent

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

如果单词" 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();   
                }

    }
}

1 个答案:

答案 0 :(得分:2)

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

而不是:

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

尝试:

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

此代码将查看ArrayList的每个索引,并确定它的任何索引是否等于&#34; orange&#34;。如果有,那么它将返回

true

...它将执行if语句! 希望这有帮助!