Track every minute of the countdown timer

I want to show a toast message after every minute ends. I am using a countdown timer and displaying the timer in text view. Please help me understand this issue. The following is my code.

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.track_me_mode);
    counter = new MyCount (length,10);
    counter.start();
    }
    });
         public class MyCount extends CountDownTimer {
        Context mContext;

        public MyCount(long millisInFuture, long countDownInterval) {
          super(millisInFuture, countDownInterval);
        }


        public void onTick (long millisUntilFinished) {
            timerView.setText ( formatTime(millisUntilFinished));


          }

        public void onFinish() {


              }

            }
public String formatTime(long millis) {
    output = "";
    long seconds = millis / 1000;
    long minutes = seconds / 60;
    long hours=minutes/ 60;

    seconds = seconds % 60;
    minutes = minutes % 60;
    hours=hours%60;

    String secondsD = String.valueOf(seconds);
    String minutesD = String.valueOf(minutes);
    String hoursD=String.valueOf(hours);

    System.out.println(minutesD);

    if (seconds < 10)
      secondsD = "0" + seconds;
    if (minutes < 10)
      minutesD = "0" + minutes;

    if (hours < 10)
        hoursD = "0" + hours;

    output = hoursD+" : "+minutesD + " : " + secondsD;
    return output;
  }
}

      

+1


source to share


1 answer


Ok, you need to change the code a little,



  • You need to change the Seconds variable to the class level
  • You need to change your spacing as follows:

    from counter = new MyCount (3600000,10);

    to counter = new MyCount (3600000,1000);

    , because the second argument is a millisecond. I made all the changes below the code,

    public class MainActivity extends Activity
    {
    TextView timerView;
    Button end,SOS;
    String output;
    MyCount counter;
    int length;
    
    // Change by Lucifer
    long seconds;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        timerView=(TextView)findViewById(R.id.tv_timer_track_me);
    
          //        counter = new MyCount (3600000,10);
            counter = new MyCount (3600000,1000);
            counter.start();
    }
    
    public String formatTime(long millis) 
    {
        output = "";
        seconds = millis / 1000;
        long minutes = seconds / 60;
        long hours=minutes/ 60;
    
        seconds = seconds % 60;
        minutes = minutes % 60;
        hours=hours%60;
    
        String secondsD = String.valueOf(seconds);
        String minutesD = String.valueOf(minutes);
        String hoursD=String.valueOf(hours);
    
        if (seconds < 10)
            secondsD = "0" + seconds;
        if (minutes < 10)
            minutesD = "0" + minutes;
    
        if (hours < 10)
            hoursD = "0" + hours;
    
        output = hoursD+" : "+minutesD + " : " + secondsD;
    
        return output;
    }
    
    public class MyCount extends CountDownTimer 
    {
        Context mContext;
    
        public MyCount(long millisInFuture, long countDownInterval) 
        {
            super(millisInFuture, countDownInterval);
        }
    
    
        public void onTick (long millisUntilFinished) 
        {
            timerView.setText ( formatTime(millisUntilFinished));
    
            if ( seconds == 0 )
            {
                Toast.makeText( getApplicationContext(), "Done", Toast.LENGTH_LONG ).show();
            }
        }
    
        public void onFinish() {}
    
    }
    
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        counter.cancel();
    }
    }
    
          

+8


source







All Articles