Get Real Time - Not Device Set Time in android Get Real Time - Not Device Set Time in android android android

Get Real Time - Not Device Set Time in android


You need to use the NTP (Network Time Protocol) protocol:

Here is some code I found somewhere else... and I am using it. This uses the Apache Commons library, which can be installed using Gradle (adding a dependency on commons-net:commons-net:3.6)

If you need a list of time servers, check: http://tf.nist.gov/service/time-servers.html

Here is some Java Code for you to use:

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);    }}

Note the Android code must run on the background thread and include gradle dependency:

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


There is no Android API to get you such a time. The user can always change the device time, nothing you can do about that.

Your best bet would be to run a server with a webservice, from which you can get the time. Since you control the server, you can try to ensure it returns the correct time.