Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想知道如何从editText中阅读文本并显示答案_Java_Android_Android Studio - Fatal编程技术网

Java 我想知道如何从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);

我有一个问题,按“图像视图”“图像视图”“单击”上的长键。设置长键单击侦听器识别声音并回答问题。如何使普通的press imageViewClick.setOnClickListener识别editText的文本并回答问题

我想知道如何从editText中阅读文本并显示答案

谢谢

    @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的文本,就像您的问题得到回答一样?