Получение секунд от хронометра до целого числа - PullRequest
0 голосов
/ 06 июля 2019

Я создаю игру, которая будет повышать ее уровень каждые 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 с предыдущим уровнем.

1 Ответ

0 голосов
/ 06 июля 2019

Во-первых, 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));

Возможно, есть еще несколько нюансов вашей проблемы - если так, не стесняйтесь комментировать.

...