Android - Мрежова дата/час

В процес съм на писане на приложение за Android. Трябва да позволя на моите потребители да уловят текущото си местоположение и да регистрират датата/часа, когато това се е случило. Уловката е, че датата/часът не може да бъде нещо, което потребителят може да промени, като коригира датата/часа на своето устройство.

Можете ли да ме насочите в правилната посока за получаване на дата/час на клетъчната мрежа при използване на услуги за местоположение за кули, както и как да получа GPS дата/час.

Всяка помощ се оценява, благодаря!


person Chris    schedule 07.11.2011    source източник
comment
Записвате ли информация от страна на сървъра? Ако е така, просто използвайте датата/часа на сървъра.   -  person Brad    schedule 07.11.2011
comment
Ние го правим, но изискването всъщност е от правителството. Тяхното изискване е да използват датата/часа на GPS сигнала или датата/часа на клетъчната мрежа (в зависимост от това как местоположението е извлечено). Имаме подобен проблем с нашето приложение за iPhone... но аз не съм разработчикът за това :)   -  person Chris    schedule 07.11.2011
comment
Бих използвал GPS, свързан към сървъра за това. Би било по-трудно да се подправите, при условие че не правите забавени качвания.   -  person Brad    schedule 07.11.2011
comment
Но знаете ли дали има начин да извлечете датата/часа на клетъчната мрежа и/или датата/часа от GPS сателита?   -  person Chris    schedule 08.11.2011
comment
Не, не го правя (поради което не попълних отговор по-долу). Просто предлагах алтернатива, в случай че никой не предложи правилен отговор.   -  person Brad    schedule 08.11.2011


Отговори (1)


GPS или мрежово времево клеймо може да бъде извлечено с помощта на LocationListener в Android API за местоположение.

Вижте проекта GPSTest с отворен код за напълно работещ пример: https://github.com/barbeau/gpstest

Можете да поискате да слушате актуализации на мрежовото местоположение:

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

или GPS актуализации на местоположението:

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

След това, когато дадено местоположение бъде предадено на метода LocationListener.onLocationChanged, можете да прочетете клеймото за време от това местоположение:

@Override
public void onLocationChanged(Location location) {
    Log.i("Timestamp", "New timestamp: " + location.getTime());
}

Друга възможност е да направите заявка към сървър на Network Time Protocol (NTP), който е напълно независим от устройството и клетъчната мрежа.

Вижте тази публикация за подробности относно внедряването на NTP клиент:

използване на ntp услуга

person Sean Barbeau    schedule 07.09.2012