如何根据语音识别结果使用拨动开关

how to use toggle switch by result of speech recognition

我想通过打开和关闭等语音命令使用切换开关,所以我从网站获得了语音识别代码,但不知道如何通过它触发我的切换按钮

我使用的语音识别代码-

package com.authorwjf.talk2me;

import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

protected static final int REQUEST_OK = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    findViewById(R.id.button1).setOnClickListener(this);
}

@Override
public void onClick(View v) {
     Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
     i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
     try {
         startActivityForResult(i, REQUEST_OK);
     } catch (Exception e) {
         Toast.makeText(this, "Error initializing speech to text engine.", Toast.LENGTH_LONG).show();
     }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode==REQUEST_OK  && resultCode==RESULT_OK) {
        ArrayList<String> thingsYouSaid = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        ((TextView)findViewById(R.id.text1)).setText(thingsYouSaid.get(0));



    }
}

}

你的数组 thingsYouSaid 有你所有可能的字符串数组。例如,如果我说 hello 它会像 [hello,aloe,hallo,no] 所以你要做的是你可以将你的字符串 switch off 匹配到结果字符串数组,如果它匹配 "switch off" 而不是将开关的值同样从打开更改为关闭;

    if (requestCode==REQUEST_OK  && resultCode==RESULT_OK) {
            ArrayList<String> thingsYouSaid = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

    for(String value : thingsYouSaid.get(0)){

    if(value.equalsignorecase("switch off")){
      // change value for switch to off

       break;
    }
    else if(value.equalsignorecase("switch on")){
    // change value for switch to on
    break;
    }


 }