如何将用户输入的语音命令与硬编码字符串进行比较

时间:2015-06-17 22:09:04

标签: java android api voice

我目前正在开发一款通过语音命令接受用户输入的应用。该程序使用谷歌api识别单词。我希望能够将用户语音输入与硬编码字符串进行比较。我的问题是我不知道如何编写这个函数。我正在使用if else语句来匹配硬编码字符串,但Toast始终是错误的。有人可以指导我吗?谢谢你的时间!

/**
 * Receiving speech input
 * */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
    case REQ_CODE_SPEECH_INPUT: {
        if (resultCode == RESULT_OK && null != data) {

            ArrayList<String> result = data
                    .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            txtSpeechInput.setText(result.get(0));

            if(txtSpeechInput.equals("weather")) {
                Toast.makeText(getApplicationContext(), "Good", Toast.LENGTH_SHORT).show();
            }else{

                Toast.makeText(getApplicationContext(), "It's a difficult question... I'm sorry", Toast.LENGTH_SHORT).show();


            }

        }

        break;
    }

    }
}

1 个答案:

答案 0 :(得分:2)

您正在将String与TextView对象进行比较,而不是直接与数据进行比较。

尝试if( result.get(0).equals("weather") ) { ... }

或者至少if( txtSpeechInput.getText().toString().equals("weather") ) { ... }