2014-11-10 3 views
0

У меня есть edittext, для которого я использую речь в тексте. Я хотел бы добавить текст в edittext вместо перезаписи. Как я могу это достичь. Сейчас он фиксирует предложение и отображает его в edittext. БлагодаряДобавить текст в edittext, используя речь в текст

общественный недействительный OnClick (View v) {

  Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);   
      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US"); 



      try { 
        startActivityForResult(intent, RESULT_SPEECH); 
        et_text.setText(""); 


       } catch (ActivityNotFoundException a) { 

     Toast.makeText(getApplicationContext(),"Opps! Your device doesn't support Speech to Text", Toast.LENGTH_SHORT).show(); 

       } 


     } 



@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     switch (requestCode) { 
     case RESULT_SPEECH: { 
      if (resultCode == RESULT_OK && null != data) { 


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



       et_text.setText(text.get(0)); 



      } 
      break; 
     } 

     } 
    } 

ответ

0

Вы можете просто использовать append метод вместо setText:

et_text.append(text.get(0)); 
0

Я думаю, когда вы используете свой код в первый раз, EditText пуст, то ваш код выполняется и установить какой-нибудь текст после признания какой-то речи, во втором запуске вы снова хотите показать текст из речи и хотите, чтобы он был добавлен к последнему тексту, который был установлен на EditText. Перед установкой текста на EditText с использованием setText() сначала вызовите getText() на EditText и сохраните его в some String variable.Then объединить текст, сгенерированный во время второго запуска кода.

if(et_text.getText.length()>0) 
{ 
et_text.setText(et_text.getText().toString() + text.get(0)); 
} 
else 
{ 
    et_text.setText(text.get(0)); 
} 
}