Android - Сеть Дата / Время - PullRequest
       9

Android - Сеть Дата / Время

3 голосов
/ 07 ноября 2011

Я нахожусь в процессе написания приложения для Android. Мне нужно, чтобы мои пользователи могли зафиксировать свое текущее местоположение и записать дату / время, когда это произошло. Суть в том, что дата / время не могут быть чем-то, что пользователь может изменить, отрегулировав дату / время на своем устройстве.

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

Любая помощь приветствуется, спасибо!

Ответы [ 2 ]

4 голосов
/ 07 сентября 2012

GPS или сетевую временную метку можно получить с помощью LocationListener в Android Location 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());
}

Другим вариантом является отправка запроса на сервер NTP, который полностью независим от устройства и сотовой сети.

См. Этот пост для получения подробной информации о реализации клиента NTP:

использование службы ntp

0 голосов
/ 06 марта 2017
 public static final String TIME_SERVER = "time-a.nist.gov";
 public static void printTimes() throws IOException {
        NTPUDPClient timeClient = new NTPUDPClient();
        InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
        TimeInfo timeInfo = timeClient.getTime(inetAddress);
        //long returnTime = timeInfo.getReturnTime();   //local device time
        long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime();   //server time

        //Get Current Time
        Long tsLong = System.currentTimeMillis()/1000;
        String ts = tsLong.toString();
        Log.e("After get PrintTime..","After get PrintTime..>>"+ts);

    enter code here
        Log.e("getCurrentNetworkTime", "Time from " + TIME_SERVER + ": " + returnTime/*time*/);

    }
...