java - 如何在 switch case 中使用多个 postDelayed 处理程序来显示图片
问题描述
我正在开发一个语音识别应用程序,如果我说一些特定的词,它会显示一张图片。我目前在每种情况下都使用 postDelayed 处理程序,因此每张图片之间都有一些延迟。问题是,如果我说 2 个或更多单词,只会显示最后一张图片。这是代码:
private void imageLoader(String resultSpeech){
final Handler handler = new Handler();
String[] resultSplit = resultSpeech.split("\\s");
for (int i=0; i < resultSplit.length; i++) {
switch(resultSplit[i]) {
case "hello":
handler.postDelayed(new Runnable() {
@Override
public void run() {
loadImage("www.example.com/hello.jpg");
}
}, 3000);
break;
case "bye":
handler.postDelayed(new Runnable() {
@Override
public void run() {
loadImage("www.example.com/bye.jpg");
}
}, 3000);
break;
}
}
}
这个是针对语音识别结果的:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQ_CODE_SPEECH_INPUT: {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
txtSpeechInput.setText(result.get(0));
String resultSpeech = result.get(0);
imageLoader(resultSpeech);
}
break;
}
}
}
解决方案
推荐阅读
- quickfixj - quickfix 中是否有返回执行报告确认消息的方法?
- c++ - 旋转矩阵特征库
- python - 如何使管道中的列选择成为可能?
- javascript - 这个请求响应格式是什么?
- linq - LINQ 查询语法:Group By 和 OrderBy 并取一行
- apache - Apache Mod_Rewrite 问号
- python-3.x - 如何在表单上显示多张图片?
- sql-server - 带有特殊字符“İ”的数据库名称
- python - Keras 需要 TensorFlow 2.2 或更高版本,我有 tensorflow 2.4
- javascript - 如何在Highchart上仅使用json对象(无js功能)更改系列(分组柱形图)的颜色?