Не могу показать обновляемое время

Ответить
Аватара пользователя
sergentum
Сообщения: 22
Зарегистрирован: 10 апр 2014, 13:13

Не могу показать обновляемое время

Сообщение sergentum » 16 апр 2014, 11:07

Взял за основу урок 137 - Сенсоры и хочу сделать чтобы на экране бежало время, нагуглил что время можно взять так с параметрами на любой вкус:
c.get(Calendar.MILLISECOND);

изменил вот этот кусок кода

Код: Выделить всё

      case Sensor.TYPE_GRAVITY:
        for (int i = 0; i < 3; i++) {
          valuesGravity[i] = event.values[i];
          timeMin = c.get(Calendar.MINUTE);
          timeSec = c.get(Calendar.SECOND);
          timeMsec = c.get(Calendar.MILLISECOND);
          Log.d("LOGS", "Время: " + timeMin + ":" + timeSec + ":" + timeMsec);
        }
логи пишутся в логкат, но содержимое переменных не меняется, почему так?
и как починить, чтобы время обновлялось в логах и на экране

Код: Выделить всё

        .append("\n\nTime : " + format(valuesTime))
так тоже пробовал появлялись значения на момент запуска и все.
Последний раз редактировалось sergentum 16 апр 2014, 11:22, всего редактировалось 1 раз.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Не могу показать обновляемое время

Сообщение klblk » 16 апр 2014, 11:19

"c" как я понимаю экземпляр класса Calendar? он на протяжении всего цикла не изменяется с чего вдруг в нём будут меняться значения?

Аватара пользователя
sergentum
Сообщения: 22
Зарегистрирован: 10 апр 2014, 13:13

Re: Не могу показать обновляемое время

Сообщение sergentum » 16 апр 2014, 11:31

да
Calendar c = Calendar.getInstance();
я так понимаю из ответа
klblk писал(а):"c" как я понимаю экземпляр класса Calendar?
т.е. это типа "копия" класса календарь, которая раз получена и меняться не будет?
а как правильно сделать чтобы менялось? поставить эту команду туда где код периодически исполняется?

апд, уточню - это нормально каждый раз когда надо обновить время выполнять эту команду или может можно как то по другому более правильно?
спасибо за помощь

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Не могу показать обновляемое время

Сообщение altwin » 16 апр 2014, 11:51

[syntax=java5]
Time now = new Time();
now.setToNow();
[/syntax]
setToNow()
Изображение

Аватара пользователя
sergentum
Сообщения: 22
Зарегистрирован: 10 апр 2014, 13:13

Re: Не могу показать обновляемое время

Сообщение sergentum » 16 апр 2014, 12:59

Спасибо, я видел такой ответ здесь
http://stackoverflow.com/questions/5369 ... on-android
но, там написано
The Time class is a faster replacement for the java.util.Calendar and java.util.GregorianCalendar classes. An instance of the Time class represents a moment in time, specified with second precision.
The Time class is a faster replacement for the java.util.Calendar - это как следует понимать? быстрее работает или более новый класс?
Основная проблема в том что меня не устраивает точность в секунду.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Не могу показать обновляемое время

Сообщение altwin » 16 апр 2014, 13:11

sergentum писал(а): Основная проблема в том что меня не устраивает точность в секунду.
Если вы читали тему на stackowerflow, могли бы почитать до конца и посмотреть на этот ответ: http://stackoverflow.com/a/9240796/2611075
конкретнее на строку:
[syntax=java5]textViewTime.setText(today.format("%k:%M:%S"));[/syntax]
где наличие '%S' совсем не обязательно. Если же вам нужна большая точность, до милисекунд то вот пример: http://stackoverflow.com/a/10634352/2611075

P.S.
&nbspГоворят, что работает быстрее, я не проверял. Использовать лучше, так как ээто более android way + берется время из текущего в устройстве.
Изображение

Аватара пользователя
sergentum
Сообщения: 22
Зарегистрирован: 10 апр 2014, 13:13

Re: Не могу показать обновляемое время

Сообщение sergentum » 16 апр 2014, 14:03

да, нужна бОльшая точность.
до милисекунд то вот пример: http://stackoverflow.com/a/10634352/2611075
простите, но не вижу в этом коде миллисекунд
может быть вы про хронометр?

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Не могу показать обновляемое время

Сообщение altwin » 16 апр 2014, 15:38

sergentum писал(а):да, нужна бОльшая точность.
до милисекунд то вот пример: http://stackoverflow.com/a/10634352/2611075
простите, но не вижу в этом коде миллисекунд
может быть вы про хронометр?
Это просто работающий код отображающий время, в нем используется объект Date, который как и Calendar способен выдавать милесекунды, в отличии от Time который этого не умеет.
Изображение

Аватара пользователя
sergentum
Сообщения: 22
Зарегистрирован: 10 апр 2014, 13:13

Re: Не могу показать обновляемое время

Сообщение sergentum » 17 апр 2014, 05:11

java.util.Date
long getTime()
Returns this Date as a millisecond value.
кажется это оно. http://developer.android.com/reference/ ... /Date.html
Интересно почему почти все соседние методы устарели и отсылают в календарь а этот нет?

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Не могу показать обновляемое время

Сообщение altwin » 17 апр 2014, 07:43

sergentum писал(а):java.util.Date
long getTime()
Returns this Date as a millisecond value.
кажется это оно. http://developer.android.com/reference/ ... /Date.html
Интересно почему почти все соседние методы устарели и отсылают в календарь а этот нет?
это уже вопрос к google
Изображение

Ответить