如何使用语音识别器启动Android活动?

时间:2013-09-11 01:26:54

标签: android switch-statement speech

我想改变这个开关,以便不是点击按钮,而是通过说出相关水果的名称来启动我的活动。例如,Apple类将通过说出“Apple”这个词来发布。我该如何重写这个开关?到目前为止,我所做的所有尝试似乎都没有奏效。任何答案将不胜感激。谢谢!

package com.example.speech;

import com.example.speech.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

public class MainActivity extends Activity implements OnClickListener{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // find our buttons and set onClickListeners for all
        ImageButton one = (ImageButton)findViewById(R.id.one);
        ImageButton two = (ImageButton)findViewById(R.id.two);
        ImageButton three = (ImageButton)findViewById(R.id.three);
        ImageButton four = (ImageButton)findViewById(R.id.four);
        ImageButton five = (ImageButton)findViewById(R.id.five);
        ImageButton six = (ImageButton)findViewById(R.id.six);
        one.setOnClickListener(this);
        two.setOnClickListener(this);
        three.setOnClickListener(this);
        four.setOnClickListener(this);
        five.setOnClickListener(this);
        six.setOnClickListener(this);
    }

    public void onClick(View v) {

        // do something based on the button that was clicked
        switch(v.getId()) {
            case R.id.one:
                // create an intent indicating we want
                // to start the activity.

                            Intent i = new Intent(this, Apple.class);
                // start the activity based on the Intent
                startActivity(i);
                finish();
                break;

            case R.id.two:
                    Intent j = new Intent(this, Orange.class);

                    // start the activity based on the Intent
                    startActivity(j);
                    finish();
                    break;

            case R.id.three:
                    Intent k = new Intent(this, Banana.class);

                    // start the activity based on the Intent
                    startActivity(k);
                    finish();
                    break;

            case R.id.four:
                    Intent l = new Intent(this, Grape.class);

                    // start the activity based on the Intent
                    startActivity(l);
                    finish();
                    break;

            case R.id.five:
                    Intent m = new Intent(this, Strawberry.class);

                    // start the activity based on the Intent
                    startActivityForResult(m, 0);
                    finish();
                    break;

            case R.id.six:
                    Intent n = new Intent(this, Kiwi.class);

                    // start the activity based on the Intent
                    startActivity(n);
                    finish();
                    break;
                    default:
                    finish();
        }

    };
}

这是处理语音活动结果的正确方法吗?

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == VOICE_RECOGNITION_REQUEST_CODE)

            //If Voice recognition is successful then it returns RESULT_OK
            if(resultCode == RESULT_OK) {

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

                if (!textMatchList.isEmpty()) {
                    // If first Match contains the word 'apple'
                    // Then start the apple activity.
                    if (textMatchList.get(0).contains("apple")) {
                            // create an intent indicating we want
                // to start the activity.

                            Intent i = new Intent(this, Apple.class);
                // start the activity based on the Intent
                startActivity(i);
                finish();
                break;

我觉得这条线后有些东西不见了......

if (textMatchList.get(0).contains("apple")) {

1 个答案:

答案 0 :(得分:0)

Here是有关如何使用Android语音识别的示例教程。您需要在OnActivityResult中处理搜索结果并对apple,banana,grape等进行字符串匹配..如果找到字符串匹配,则启动相应的活动!