Ответ 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'