0

我正在构建一个应用程序,它将提示用户说几句话,然后将这些单词与字符串进行比较,并根据说出的字符串打开一个新活动。我正在使用的代码是这样的:

    package com.example.voiceex;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    static final int check=1111;
    static String res;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button b1=(Button)findViewById(R.id.button1);
        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say Something");
                startActivityForResult(i, check);
            }
        });
        /*if("hello".equalsIgnoreCase(res))
        {
            Toast.makeText(getBaseContext(), "Hello is spoken", Toast.LENGTH_SHORT).show();
        }
        else if("i am hungry".equalsIgnoreCase(res))
        {
            Toast.makeText(getBaseContext(), "Ill give you some food", Toast.LENGTH_LONG).show();
        }*/
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    protected void onActivityResult(int request,int result,Intent data)
    {
        if(request==check&&result==RESULT_OK)
        {
            res=data.getStringExtra(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            Toast.makeText(getBaseContext(), res, Toast.LENGTH_SHORT).show();

        }
    }

}

这里的吐司是空白的。即使使用了注释部分,也没有任何反应。我哪里错了?谢谢

4

1 回答 1

1

RecognizerIntent 返回匹配数组,您应该确定自己要使用的字符串通常是第一个表单数组

ArrayList 匹配 = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
for(字符串匹配:匹配){
    Log.i("匹配文本", match);
}
于 2013-08-14T17:12:04.233 回答