Android Studio中使用SpeechRecognizer设置EditText文本时覆盖原有内容的问题
问题原因
你在onResults回调中直接调用了EditText的setText()方法,该方法会直接替换控件内已存在的全部内容,所以原有内容会被清空。
解决方案
只需修改onResults回调内的文本赋值逻辑,先获取控件原有内容,将新识别的文本拼接在原有内容之后再设置即可,修改后的代码如下:
@Override public void onResults(Bundle results) { micButton.setImageResource(R.drawable.ic_baseline_mic_off_24); ArrayList<String> data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); // 获取原有内容 String existedText = editTextDescription.getText().toString(); // 拼接新识别的内容,中间可按需加空格、换行符分隔 String finalText = existedText + data.get(0); editTextDescription.setText(finalText); // 将光标定位到文本末尾 editTextDescription.setSelection(finalText.length()); }
可选优化
如果需要实现语音识别过程中实时显示部分识别结果,可以在onPartialResults回调中添加相同的拼接逻辑,无需等待语音输入完全结束就能看到识别内容。
内容的提问来源于stack exchange,提问作者Harshitha
相关产品推荐
相关产品推荐

