如何从倒数计时器中获取经过的时间以发送到服务器

How to get elapsed time from countdown timer to send to the server

我正在制作一个测验应用程序,其中显示倒数计时器。它在文本字段中显示倒数计时器,并在进度条中显示进度。但是在测验结束时,我想将用户经过的时间发送到服务器。我怎样才能得到经过的时间?

  countDownTimer = new CountDownTimer(10800000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            i[0]++;
            progressBar.setProgress((int) i[0] *100/(10800000/1000));

             timer.setText(String.format("%d : %d : %d", TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
                     TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                     TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
        }

        @Override
        public void onFinish() {

            i[0]++;
            progressBar.setProgress(100);

        }
    };

试试这个解决方案

全局声明这个变量并使用它

private int elapsed_time = 10800000;

countDownTimer = new CountDownTimer(elapsed_time, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            i[0]++;
            progressBar.setProgress((int) i[0] *100/(10800000/1000));

             timer.setText(String.format("%d : %d : %d", TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
                     TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                     TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
        }

        @Override
        public void onFinish() {

            i[0]++;
            progressBar.setProgress(100);
            sendRequestToServerAPI(elapsed_time);
        }
    };

我从@quick learner 那里得到了灵感。

long elapsed_time;

 countDownTimer = new CountDownTimer(10800000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            i[0]++;
            progressBar.setProgress((int) i[0] *100/(10800000/1000));

             timer.setText(String.format("%d : %d : %d", TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
                     TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                     TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

             elapsed_time = 10800000-millisUntilFinished;
        }

        @Override
        public void onFinish() {
            i[0]++;
            progressBar.setProgress(100);

        }
    };