首页 > 解决方案 > 如何获取 ScrollView 的每个 EditText 语音结果

问题描述

我有一个 ScrollView,它有大约 13 个 EditText。我要做的是将语音转换为文本,因此当用户触摸任何 EditText 并单击说话按钮并开始说话时,它将转换为该 EditText 的文本,当他再次触摸另一个 EditText 时,它将转换为该文本EditText 不更改以前的 EditText 等等。我使用了 for 循环,但在所有 13 个 EditText 中都找到了一个语音的结果。我还添加了一个 break 语句,但效果不佳。

 public void onResults(Bundle bundle) {
                //getting all the matches
                ArrayList<String> matches = bundle
                        .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);


                if (matches != null) {
                    for (int j = 0; j < speEdtId.length; j++) {
                        eEdit = findViewById(speEdtId[j]);

                        if (speEdtId[j]==speEdtId[0]) {
                            eEdit.setText(matches.get(0));
                        } else if (speEdtId[j]==speEdtId[1]) {
                            eEdit.setText(matches.get(0));
                        } else if (speEdtId[j]==speEdtId[2]) {
                            eEdit.setText(matches.get(0));}

                                      .
                                      .
                                      .
break;
                    }
 }}

标签: javaandroidandroid-edittextspeech-recognition

解决方案


您为每个 Edittext 设置相同的值。你可以做的是:

                              if (speEdtId[j]==speEdtId[0]) {
                                eEdit.setText(matches.get(0));
                                matches.clear();
                            }

并且还将标签设置为每个 Edittext 并在循环中使用标签查找。希望这可以帮助


推荐阅读