Код: Выделить всё
public class MainActivity extends Activity {
TextView tvMainTime;
TextView tvCurRound;
Button btnFight;
CountDownTimer roundTimer;
CountDownTimer restTimer;
SimpleDateFormat sdf; // формат времени
int currentRound; // для подсчёта раундов
SharedPreferences shPref;
......
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
....
tvMainTime = (TextView) findViewById(R.id.tvMainTime);
btnFight = (Button) findViewById(R.id.btnFight);
shPref = PreferenceManager.getDefaultSharedPreferences(this);
sdf = new SimpleDateFormat("mm:ss");
}
public void onClickBtnFight(View v) {
// ТОDO здесь будет проверка запущен ли таймер и в соответствии с этим
// запуск сначала или остановка или продолжение после паузы
StartFight(
Integer.valueOf(shPref.getString("rounds", "3")),
myStrToInt(shPref.getString("timeRound", "3:00")),
myStrToInt(shPref.getString("timeRest", "1:00")));
}
// Запуск таймера с исзодными параметрами
void StartFight(final int iNumberRounds, int iTimeRound, int iTimeRest) {
....
currentRound = 1;
roundTimer = new CountDownTimer(iTimeRound*1000, 200) {
@Override
public void onTick(long millisUntilFinished) {
tvMainTime.setText(sdf.format(new Date(millisUntilFinished)));
}
@Override
public void onFinish() {
Log.d(LOG_TAG, " Таймер раунда закончен, инкремент текущего раунда");
playSound(soundIdGong); // Конец раунда
if(currentRound == iNumberRounds) {
Log.d(LOG_TAG, "Бой закончен!");
ResetTimer();
} else {
currentRound++;
Log.d(LOG_TAG, "Старт таймера перерыва ");
restTimer.start();
}
}
}.start();
restTimer = new CountDownTimer(iTimeRest*1000, 200) {
@Override
public void onTick(long millisUntilFinished) {
tvMainTime.setText(sdf.format(new Date(millisUntilFinished)));
}
@Override
public void onFinish() {
Log.d(LOG_TAG, "Таймер перерыва завершён и стартует таймера раунда ");
roundTimer.start();
if(m_bTimerWarn) warnTimer.start(); // старт предупредительного таймера если он используется
tvCurRound.setText("Round "+String.valueOf(currentRound)+"/"+shPref.getString("rounds", "3"));
playSound(soundIdGong); // Начало раунда
}
};
} // startFight
public void ResetTimer() {
if (roundTimer!=null) roundTimer.cancel();
if (prepTimer!=null) prepTimer.cancel();
if (restTimer!=null) restTimer.cancel();
tvCurRound.setText("Round "+"1"+"/"+shPref.getString("rounds", "3"));
tvMainTime.setText(shPref.getString("timeRound", "3:00"));
}
.......
}