Как получить независимую от устройства локальную дату и время Android

Мое приложение зависит от времени, и я не хочу, чтобы изменение даты и времени устройства влияло на мое приложение, например, если пользователь намеренно установил дату устройства на любую предыдущую дату. Есть ли способ получить текущую дату и время, когда пользователь подключен к мобильной сети или Wi-Fi? Я не хочу использовать GPS.


person DCoder    schedule 13.08.2014    source источник
comment
Да, это возможно, вот ответ stackoverflow.com/questions/23958640/   -  person QArea    schedule 26.08.2014


Ответы (2)


Javadoc класса SystemClock описывает различные способы подсчета прошедшего времени для различных сценариев. и условия.

В вашем случае вы должны использовать

long time = SystemClock.elapsedRealtime();

Вернуть время с момента загрузки системы и включить глубокий сон. Эти часы гарантированно будут монотонными и продолжают тикать, даже когда ЦП находится в режимах энергосбережения, что является рекомендуемой основой для интервальной синхронизации общего назначения.

Вызовите его в первый раз, когда захотите начать отслеживать использование сети (полагаю, вы уже знаете, как это сделать) и сохраните это значение.

Когда вы получаете событие о том, что пользователь больше не использует сеть, снова вызовите тот же метод и посчитайте затраченное время.

long elapsed = time - SystemClock.elapsedRealtime();

Затем вы можете преобразовать миллисекунды в строку, например, так:

String formattedElapsedTime = DateUtils.formatElapsedTime(elapsed/1000);//note that this method takes second as arguments so we have to divide it by 1000
person Damian Petla    schedule 13.08.2014

Вы должны вызвать веб-сервис и получить текущую дату и время сервера. Тогда сервер будет отвечать за фактическую дату/время. Лучший способ — создать свой собственный веб-сервис, потому что он дает вам больше контроля, чем использование стороннего.

person Ragaisis    schedule 13.08.2014