我正在为Android创建一个测验应用程序,我正在使用计时器。基于计时器,问题将转移到下一个。有20个问题。我给每个问题6秒的时间。他们应该在6秒内回答,否则问题将转移到下一个问题。如果他们在四秒内回答意味着剩余的2秒将被添加到下一个问题。这样下一个问题将有8秒的时间。因此,我必须在下一个问题中添加剩余的秒数直到结束。我使用下面的代码,但它只启动和停止计时器。
private Runnable updateTimerThread = new Runnable() {
public void run() {
timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
updatedTime = timeSwapBuff + timeInMilliseconds;
int secs = (int) (updatedTime / 1000);
int mins = secs / 60;
secs = secs % 60;
mTimerText.setText("" + mins + ":" + String.format("%02d", secs));
customHandler.postDelayed(this, 0);
}
};
public void playClock() {
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread, 0);
if (SystemClock.elapsedRealtime()==6) {
getQuestion(); //Here i call my question
}
}
public void resumeClock() {
timeSwapBuff += timeInMilliseconds;
customHandler.removeCallbacks(updateTimerThread);
}
答案 0 :(得分:0)
你必须使用CountDownTimer
尝试以下方法startTimmer(6)当timmer complate有方法finishQuizTime();
被调用时(在该方法中设置下一个问题细节)。
当用户选择接听电话finishQuizTime();
&使用CountDownTimer
mCountDown.cancel();
/**
* timer for quiz question
* */
public void startTimmer(int currentQueSec) {
Log.e("start timmer for ", "--->" + currentQueSec);
mCountDown = new CountDownTimer(currentQueSec, 1000) {
@Override
public void onFinish() {
/**
* stop timmer
* */
finishQuizTime();
Log.e("time is finish", "time is finish");
}
@Override
public void onTick(long millisUntilFinished) {
queLastTime = millisUntilFinished / 1000;
}
}.start();
}