Java 我想知道如何从editText中阅读文本并显示答案
我有一个问题,按“图像视图”“图像视图”“单击”上的长键。设置长键单击侦听器识别声音并回答问题。如何使普通的press imageViewClick.setOnClickListener识别editText的文本并回答问题 我想知道如何从editText中阅读文本并显示答案 谢谢Java 我想知道如何从editText中阅读文本并显示答案,java,android,android-studio,Java,Android,Android Studio,我有一个问题,按“图像视图”“图像视图”“单击”上的长键。设置长键单击侦听器识别声音并回答问题。如何使普通的press imageViewClick.setOnClickListener识别editText的文本并回答问题 我想知道如何从editText中阅读文本并显示答案 谢谢 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
imageViewClick = (ImageView) findViewById(R.id.imageViewClick);
imageViewClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
imageViewClick.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Intent voice = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
voice.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "es-ES");
voice.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "es-MX");
voice.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "pr-PR");
startActivityForResult(voice, VOICE_RECOGNIZER);
return false;
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == VOICE_RECOGNIZER){
ArrayList<String> recognized = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String listened = recognized.get(0);
editTextListening.setText(listened);
prepareAnswer(listened);
}
}
private void prepareAnswer(String listened) {
String normalize = Normalizer.normalize(listened, Normalizer.Form.NFD);
String withouttilde = normalize.replaceAll("[^\\p{ASCII}]", "");
int result;
String answer = arrayListAnswer.get(0).getAnswer();
for (int i = 0; i < arrayListAnswer.size(); i++) {
result = withouttilde.toLowerCase().indexOf(arrayListAnswer.get(i).getQuestion());
if(result != -1){
answer = arrayListAnswer.get(i).getAnswer();
}
}
answerTo(answer);
}
private void answerTo(String simpleAnswer) {
textViewAnswer.setText(simpleAnswer);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
textToSpeechRead.speak(simpleAnswer, TextToSpeech.QUEUE_FLUSH, null, null);
}else {
textToSpeechRead.speak(simpleAnswer, TextToSpeech.QUEUE_FLUSH, null);
}
}
public void initialize(){
editTextListening = (EditText) findViewById(R.id.editTextQuestion);
textViewAnswer = (TextView) findViewById(R.id.textViewAnswer);
arrayListAnswer = provideData();
textToSpeechRead = new TextToSpeech(this, this);
}
@Override
public void onInit(int status) {
}
public ArrayList<AnswersActivity> provideData(){
ArrayList<AnswersActivity> answers = new ArrayList<>();
answers.add(new AnswersActivity("defecto", "No estoy programado para hablar de eso"));
answers.add(new AnswersActivity("puff", "Puff"));
answers.add(new AnswersActivity("chiste", "¿Sabes que mi hermano anda en bicicleta desde los 4 años? Mmm, ya debe estar lejos"));
answers.add(new AnswersActivity("adios", "que descanses"));
answers.add(new AnswersActivity("estas", "esperando serte de ayuda"));
answers.add(new AnswersActivity("dj", "YEY BALBIN"));
return answers;
}
}要识别EditText中的输入并将输入转换为语音,可以使用Android提供的TextToSpeech类。例如:
textToSpeech = new TextToSpeech(MainActivity.this, MainActivity.this);
editText = (EditText) findViewById(R.id.editText);
imageViewClick = (ImageView) findViewById(R.id.imageViewClick);
imageViewClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextToSpeechFunction() ;
}});
}
public void TextToSpeechFunction()
{
String text = editText.getText().toString();
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null);
Toast.makeText(MainActivity.this , text, Toast.LENGTH_LONG).show();
}
@Override
public void onDestroy() {
textToSpeech.shutdown();
super.onDestroy();
}
@Override
public void onInit(int TexttoSpeechCurrentStatus) {
if (TexttoSpeechCurrentStatus == TextToSpeech.SUCCESS) {
textToSpeech.setLanguage(Locale.US);
imageViewClick.setEnabled(true);
TextToSpeechFunction();
}
}
你的问题有点不清楚。您想将Edittext中的输入转换为语音,还是只获取文本并单击显示?对不起,我需要的是您识别Edittext的文本,就像您的问题得到回答一样?