Real Geographical Timeを見つける方法、私のアプリケーションのように、私は自分のアプリケーションにリアルタイムを添付したいと思います。
そのため、ユーザーがデバイスの時刻を変更した場合、実際の実勢時刻のみを取得する必要があります。デバイスの時刻は取得しません。
私の質問は非常に紛らわしいですが、簡単な言語で理解してみてください-
私はデバイス時間を必要としない、私はいつでも実際の一般的な時間を必要とする
NTP(Network Time Protocol)プロトコル)を使用する必要があります:
これが私がどこかで見つけたいくつかのコードです...そして私はそれを使用しています。これは、Gradleを使用してインストールできるApache Commonsライブラリを使用します(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'
そのような時間を取得するためのAndroid APIはありません。ユーザーはいつでもデバイスの時間を変更できますが、それについては何もできません。
最善の策は、時間を取得できるWebサービスを使用してサーバーを実行することです。サーバーを制御しているので、サーバーが正しい時刻を返すようにすることができます。