Countdowntimer в минутах и ​​секундах

Это таймер обратного отсчета, и я хочу печатать в считанные минуты. ex (300000mili) 5 минут, и счет 4:60, 4:59 … вот часть моего кода

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 } } 

И как я могу вибрировать при отсутствии 20 секунд? и когда он закончил? спасибо и извините за мой плохой английский

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(); 

Поскольку java 1.5 существует class java.util.concurrent.TimeUnit

  _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

TimeUnit представляет длительность времени в заданной единице детализации и предоставляет методы утилиты для преобразования между единицами и для выполнения операций синхронизации и задержки в этих единицах.

Для версий Java ниже 1.5 или для систем, которые не полностью поддерживают class TimeUnit, могут использоваться следующие уравнения:

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

Вибрировать

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

Редактировать:

Вибрация в течение 4 мин 55 секунд в течение 500 миллисекунд

  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); } 

Просто используйте modulo operator % чтобы получить оставшиеся миллисекунды, и разделите их на 1000 для преобразования в секунды.

 blue.setText((millisUntilFinished / 60000)+":"+(millisUntilFinished % 60000 / 1000)); 
  • Как создать classы Java из файла WSDL
  • getHeight возвращает 0 для всех объектов Android UI
  • Пользовательские шрифты и XML-макеты (Android)
  • char и int в Java
  • Как я могу получить текущую ориентацию экрана?
  • Android: Разница между onInterceptTouchEvent и dispatchTouchEvent?
  • Android: навигационная панель для всех видов деятельности
  • Как читать текстовый файл в Android?
  • Использование Retrofit в Android
  • Android - Изменить тему приложения onClick
  • Key hash для Android Android SDK
  • Давайте будем гением компьютера.