Как заполнить поле edittext вместо просмотра списка при использовании распознавания речи? - PullRequest
1 голос
/ 07 марта 2012

Я использую код из примера распознавания голоса Google. Они записывают 5 лучших результатов в просмотр списка, но я просто хочу, чтобы верхний результат был опубликован в поле edittext. Это возможно? Или можно заполнить список, но затем автоматически скопировать результаты в поле редактирования текста?

Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Если вы хотите вернуть только 1 результат, вы должны указать его в намерении, которое вы используете для запуска действия по распознаванию голоса:

private void startVoiceRecognitionActivity() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

    intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getClass().getPackage().getName());


    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    //since you only want one, only request 1
    intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);

    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");

    startActivityForResult(intent, 1234);
}

А затем вытащить один результат и установить его в свой EditText:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == Activity.RESULT_OK){
        //pull all of the matches
        ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

        String topResult = matches.get(0);
        EditText editText = findViewById(R.id.yourEditText);
        editText.setText(topResult);
    }
}
0 голосов
/ 12 июня 2015
    public void doSome(View v) {
    Intent i=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
 RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak Up");
    i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,1);
    startActivityForResult(i, 1111);


    //finish();
    //Toast.makeText(getApplicationContext(),"Anonymus class 1",Toast.LENGTH_LONG).show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    if(requestCode == 1111 && resultCode==RESULT_OK){

        ArrayList<String> results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
        String s=results.get(0);
        EditText ed=(EditText)findViewById(R.id.editText);
        ed.setText(s);

    }

Я использовал атрибут onclick кнопки, но это не имеет значения, в моем случае это работает нормально

...