Я создаю игру, которая будет повышать свой уровень каждые 10 секунд, пользователи будут видеть время (используя хронометр) и уровень, на котором они сейчас находятся. Я пытаюсь создать целое число, которое будет увеличиваться каждые 10 секунд, как показано на хронометре.
Я не нашел здесь руководства, отвечающего моим потребностям. Я пытался догадаться, что хронометр отсчитывает миллисекунды, но это было не так.
Внутри моего класса:
private Chronometer chronometer;
Внутри моего onCreate (используется XML):
chronometer=findViewById(R.id.timer);
Попытка преобразовать хронометр в секунды (только первая попытка):
int timeChecker=(int) (SystemClock.elapsedRealtime() - chronometer.getBase());
if (timeChecker==10){
lvl++;
lvlcount.setText(lvl+"");
}
Я хотел повышать уровень каждые 10 секунд, а затем менять TextView на предыдущий уровень.




Во-первых, elapsedRealTime() и chronometer.getBase() выражены в миллисекундах, поэтому дельта также выражается в миллисекундах:
long timeDeltaFromStartInMs = (SystemClock.elapsedRealtime() - chronometer.getBase());
Далее, предполагая, что хронометр никогда не сбрасывается для этого обсуждения, тогда количество пройденных уровней равно (целочисленное деление усекается):
int numLevelsElapsed = (int) (timeDeltaFromStartInMs / 10000);
Предполагая, что начальный уровень начинается с 0, это просто:
lvlcount.setText(Integer.toString(numLevelsElapsed));
Если уровень имеет начальное ненулевое значение (из какой-то предыдущей игры):
lvlcount.setText(Integer.toString(initialLevelCnt+numLevelsElapsed));
Может быть несколько других нюансов в вашей проблеме - если это так, не стесняйтесь комментировать.