How can I launch my Android activities with the speech recognizer?

巧了我就是萌 提交于 2019-12-13 05:09:13

问题


I want to alter this switch such that instead of clicking the buttons my activities will launch by speaking the name of the associated fruit. For instance, the Apple class will launch by speaking the word "Apple". How should I rewrite this switch? All of my attempts at doing this have not seemed to work thus far. Any answers provided will be greatly appreciated. Thank you!

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();
        }

    };
}

Is this the correct way to handle the voice activity result?

@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;

I feel like something is missing after this line...

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

回答1:


Here is a sample tutorial on how to use Android voice recognition. You need to handle the search result in OnActivityResult and do a string match to apple, banana,grape and so on.. if the string match is found, launch the respective activity!



来源:https://stackoverflow.com/questions/18731300/how-can-i-launch-my-android-activities-with-the-speech-recognizer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!