Преобразование кода из API 9 в API 8 ( TimeUnit)

Я пытаюсь создать таймер обратного отсчета, который работает с Android 2.2 (API 8). Я нашел этот код, но он работает только с API 9 и выше. Как я могу заставить этот код работать в API 8?

  //API 9 and above
public class CountClass extends CountDownTimer{
    public CountClass(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
        // TODO Auto-generated constructor stub
    }





    @Override
    public void onFinish() {
        // TODO Auto-generated method stub

        txtchronoview.setText("Complete.");
        Toast.makeText(calculator1.this,
                    "Call a judge, your opponent is exceed its 3 minutes limit per turn", Toast.LENGTH_SHORT).show();
        vibrate(3000);

        //call();
    }

    @TargetApi(Build.VERSION_CODES.GINGERBREAD)
    @Override
    public void onTick(long millisUntilFinished) {
        // TODO Auto-generated method stub

        long millis = millisUntilFinished;
        String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), 
                (TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toMinutes(millis)) / 60000 ), //DISPLAY 3 MINUTE COUNT DOWN 
                //(TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toMinutes(millis)) / 60 ), //DISPLAY 1 MINUTE COUNT DOWN CYCLE FOR 3 TIMES
                //(TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toMinutes(millis))  ), //DISPLAY EVERYTHING IN MILLISECONDS FOR 3 MINUTES 
                TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)) );
        System.out.println(hms);
        txtchronoview.setText(hms);


    }

}

1 ответ

Решение

Используйте это для минут и секунд, с небольшим изменением вы можете добавить час.

public String milisecToMinAndSec(long milisec) {
        int sec = (int) milisec / 1000;
        String outString = "";
        if (sec > 60)
            outString = String.format("%02d",(int) (sec / 60)) + ":" + String.format("%02d",(int) (sec % 60));
        else
            outString = "00:" + String.format("%02d",sec);

        return outString;
    }
Другие вопросы по тегам