如何从语音识别器获得单个结果,在结果的开始和结束时输出“[”和“]”

时间:2014-10-28 09:50:23

标签: android

我在我的应用中使用语音识别器。但是我希望语音识别器的单个结果没有 " [" "]" 在语音识别器提供的结果的开头和结尾。

目前我有一个代码,它给了我一个结果,但它给了" ["和"]"在我获得的结果的前面和末尾。

请检查我的代码进行可能的更正和修改,并给出一个合适的答案,我对android很新。

代码: MainActivity.java

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.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

private static final int RECOGNIZER_EXAMPLE = 1001;
private TextView tv;

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

    tv = (TextView) findViewById(R.id.text_result);

    //set up button listner 

    Button startButton = (Button) findViewById(R.id.trigger);
    startButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent intent = 
                    new Intent (RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,   RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"SAY A WORD OR PHRASE\nAND IT WILL BE SHOWN AS TEXT");
            intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
            startActivityForResult(intent,RECOGNIZER_EXAMPLE);

        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //use a switch statament for more than one request code check

    if(requestCode==RECOGNIZER_EXAMPLE && resultCode==RESULT_OK) {
        //RETURNED DATA IS A LIST OF MATCHES TO THE SPEECH IPUT
        ArrayList<String> result = 
            data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        tv.setText(result.toString());
    }

    super.onActivityResult(requestCode, resultCode, data);
}
}

2 个答案:

答案 0 :(得分:1)

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //use a switch statament for more than one request code check

    if(requestCode==RECOGNIZER_EXAMPLE && resultCode==RESULT_OK) {
        //RETURNED DATA IS A LIST OF MATCHES TO THE SPEECH IPUT
        ArrayList<String> result = 
            data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        // result here is array list , we need any element to be viewed in textview
        tv.setText(result.get(0).toString());
    }

    super.onActivityResult(requestCode, resultCode, data);
}

所以我们做出了改变

tv.setText(result.toString());

tv.setText(result.get(0).toString());

答案 1 :(得分:0)

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.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

private static final int RECOGNIZER_EXAMPLE = 1001;
private TextView tv;

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

tv = (TextView) findViewById(R.id.text_result);

//set up button listner 

Button startButton = (Button) findViewById(R.id.trigger);
startButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Intent intent = 
                new Intent (RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,   RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"SAY A WORD OR PHRASE\nAND IT WILL BE SHOWN AS TEXT");
        intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
        startActivityForResult(intent,RECOGNIZER_EXAMPLE);

    }
});

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//use a switch statament for more than one request code check

if(requestCode==RECOGNIZER_EXAMPLE && resultCode==RESULT_OK) {
    //RETURNED DATA IS A LIST OF MATCHES TO THE SPEECH IPUT
    ArrayList<String> result = 
        data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
     tv.setText(result.get(0).toString());
}

super.onActivityResult(requestCode, resultCode, data);
}
}