我正在创建一个应用程序,一个接一个地连续询问用户一系列问题。然而。我问的最后一个问题是"信息是否正确?"
我需要此提示在其他一系列连续问题之后出现至少3000ms,以便用户首先查看记录的信息并查看是否全部正确。但是目前,无论使用处理程序,最后的提示会在第二个问题之后立即出现。有没有办法在最终提示出现之前至少延迟3000毫秒?
以下是我所指的当前代码的一部分。请注意我在onClick和onActivityResult部分都尝试过处理程序。
如果有人能够提供正确的代码,我们将非常感激。
public void onClick(View v){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i1 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i1.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i1.putExtra(RecognizerIntent.EXTRA_PROMPT, "Is the information correct? (Yes/No)");
startActivityForResult(i1, check);
}
}, 3000);
Intent i2 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i2.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i2.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the current time?");
startActivityForResult(i2, checklv1);
Intent i3 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i3.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i3.putExtra(RecognizerIntent.EXTRA_PROMPT, "Is the status Confirmed or Unconfirmed?");
startActivityForResult(i3, checklv2);
Intent i4 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i4.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i4.putExtra(RecognizerIntent.EXTRA_PROMPT, "What is the temp?");
startActivityForResult(i4, checklv3);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == check && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv4.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == checklv1 && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == checklv2 && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv2.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == checklv3 && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv3.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));}
super.onActivityResult(requestCode, resultCode, data);
}
(更新)如果我使用定时器,我有以下代码,但我哪里出错了,我在哪里放置super.onActivityResult...
?
if (requestCode == check && resultCode == RESULT_OK){
ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
lv4.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
// Do nothing for your logic.
}
public void onFinish() {
// Your logic here.
}
}.start();}}
答案 0 :(得分:2)
而不是处理程序,您可以使用Countdowntimer。
new CountDownTimer(3000, 1000) {
public void onTick(long millisUntilFinished) {
// Do nothing for your logic.
}
public void onFinish() {
// Your logic here.
}
}.start();
答案 1 :(得分:0)
尝试使用setClickable方法https://developer.android.com/reference/android/view/View.html#setClickable(boolean)
public void onClick(final View v){
v.setClickable(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i1 = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i1.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i1.putExtra(RecognizerIntent.EXTRA_PROMPT, "Is the information correct? (Yes/No)");
v.setClickable(true);
startActivityForResult(i1, check);
}
}, 3000);