Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
86 views
in Technique[技术] by (71.8m points)

java - Countdowntimer in minutes and seconds

It's a countdown timer and i want to print in minutes and seconds. ex(300000mili)5 minutes, and count 4:60, 4:59... here is part of my code

final MyCounter timer = new MyCounter(300000,1000);
    blue.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.start();
        }
    });
}
public class MyCounter extends CountDownTimer {

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

    @Override
    public void onFinish() {
        blue.setText("Live");
    }

    @Override
    public void onTick(long millisUntilFinished) {
        blue.setText((millisUntilFinished/60000)+":"+(millisUntilFinished/5000));
        // i tried this
    }
}

And how can i put to vibrate when missing 20 seconds? and when it finished? thanks and sorry for my bad english

Question&Answers:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

http://developer.android.com/reference/android/os/CountDownTimer.html

TextView _tv = (TextView) findViewById( R.id.textView1 );
new CountDownTimer(30000, 1000) { // adjust the milli seconds here

    public void onTick(long millisUntilFinished) {
    _tv.setText(""+String.format("%d min, %d sec", 
                    TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));
    }

    public void onFinish() {
       _tv.setText("done!");
    }
 }.start();

Since java 1.5 there is the java.util.concurrent.TimeUnit class

 _tv.setText(""+String.format("%d min, %d sec", 
                    TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html

A TimeUnit represents time durations at a given unit of granularity and provides utility methods to convert across units, and to perform timing and delay operations in these units.

For Java versions below 1.5 or for systems that do not fully support the TimeUnit class the following equations can be used:

int seconds = (int) (milliseconds / 1000) % 60 ;
int minutes = (int) ((milliseconds / (1000*60)) % 60);
int hours   = (int) ((milliseconds / (1000*60*60)) % 24);

To vibrate

 Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            // Vibrate for 500 milliseconds
            v.vibrate(500);
  <uses-permission android:name="android.permission.VIBRATE"/> // permission in manifest

Edit:

Vibrate at 4 min 55 seconds for 500 milli seconds

 if((TimeUnit.MILLISECONDS.toMinutes( millisUntilFinished)==4) &&
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))==55)
            {

            Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
            // Vibrate for 500 milliseconds
            v.vibrate(500);
            }

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...