Подтвердить что ты не робот

Получить в реальном времени - не время установки устройства в android

Как узнать реальное географическое время, как в моем приложении, я хочу привязать реальное время к моему приложению.

Итак, если пользователь меняет время на своем устройстве, тогда я должен получить только реальное преобладающее время - НЕ ВРЕМЯ УСТРОЙСТВА

Мой вопрос очень запутан, но попытайтесь понять на простом языке -

Я не хочу ВРЕМЯ УСТРОЙСТВА, я хочу РЕАЛЬНОЕ ПРЕДОСТАВЛЕНИЕ ВРЕМЕНИ в любой момент

4b9b3361

Ответ 1

Вам нужно использовать протокол NTP (сетевой протокол времени):

Вот код, который я нашел где-то еще... и я его использую. При этом используется библиотека Apache Commons, которую можно установить с помощью Gradle (добавив зависимость от commons-net:commons-net:3.6)

Если вам нужен список серверов времени, проверьте: http://tf.nist.gov/service/time-servers.html

Вот код Java для вас:

public class TimeLookup {
    public static final String TIME_SERVER = "time-a.nist.gov";

    public static void main(String[] args) throws Exception {
        NTPUDPClient timeClient = new NTPUDPClient();
        InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
        TimeInfo timeInfo = timeClient.getTime(inetAddress);
        long returnTime = timeInfo.getReturnTime();
        Date time = new Date(returnTime);
        System.out.println("Time from " + TIME_SERVER + ": " + time);
    }

}

Обратите внимание, что код Android должен выполняться в фоновом потоке и включать зависимость gradle:

implementation 'commons-net:commons-net:3.6'

Ответ 2

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

Лучше всего было бы запустить сервер с веб-сервисом, из которого вы можете получить время. Поскольку вы управляете сервером, вы можете попытаться обеспечить его правильное время.