解析Android语音识别结果

时间:2012-07-04 03:25:35

标签: android voice-recognition

到目前为止,这是我的代码:

ArrayList<String> matches = data
                .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

        String playString = "play";

        if( matches.get(0).toString() == playString)
        {

            // do something
        }

语音识别提示就好了,我已经对它进行了测试,实际上我知道我说的是“播放”这个词。但是,在if语句中进行比较时,每次都会失败 - 有或没有toString()。我不理解的是什么?

2 个答案:

答案 0 :(得分:4)

回答 为什么 运算符==,测试两个对象引用变量是否引用对象的完全相同的实例。

方法.equals(),测试两个对象是否相互比较 - 但它们不必是同一对象的完全相同的实例。

示例#1:

Integer i = new Integer(10);
Integer j = i;

在上面的代码中。 i == j为真,因为i和j都指向同一个对象。

示例#2:

Integer i = new Integer(10);
Integer j = new Integer(10);

在上面的代码中,i == j是假的,因为尽管它们都具有值10,但它们是两个不同的对象。

另外,在上面的代码中,iequals(j)是正确的,因为虽然它们是两个不同的对象,但它们相当于它们代表相同的数字,10。

答案 1 :(得分:2)

而不是像==那样使用if( matches.get(0).toString() == playString)

使用.equals()之类的:if( matches.get(0).toString().equals(playString)