我正在为安卓系统创建一个测试应用程序,其中我使用了计时器上的timer.Based,问题将转到下一步。有20个问题。我给每个问题6秒钟的时间。他们应该在6秒内回答,否则问题将转移到下一个问题。如果他们在4秒内回答,意味着剩下的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);
}发布于 2014-06-26 15:57:29
你必须在方法startTimmer(6)下面使用CountDownTimer尝试,当定时器完成时,有方法finishQuizTime();被调用(在该方法中设置下一个问题细节)。
当用户选择应答call finishQuizTime(); & stop CountDownTimer using 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();
}https://stackoverflow.com/questions/24424821
复制相似问题