web-dev-qa-db-ja.com

Android:NTPサーバーから日付と時刻を取得する

Androidアプリケーション内で使用するために、自分のタイムサーバー(つまり192.168.1.X)から日付と時刻を取得したい

私はウェブで検索しましたが、2つの解決策があります。

解決策1

解決策2

しかし、ライブラリをインポートせずに解決策があるのだろうかと思いました。

ありがとう!

11
MW_hk

これ を使用することになります。

別のクラスを作成してから、その中にコードを追加します。そして、私のメインアクティビティからクラスを呼び出して日付を取得します。

コードは少し古く、AsyncTaskを追加して変更しました...私にとっては問題なく動作します...

そしてもう1つ、(コードが提案するものから)クラスを使用するとString.valueof(now)が0を返します。日付は次のように使用する必要があります。

SntpClient client = new SntpClient();
if (client.requestTime("time.foo.com")) {
    long now = client.getNtpTime() + SystemClock.elapsedRealtime() - 
    client.getNtpTimeReference();
    Date current = new Date(now);
    Log.i("NTP tag", current.toString());
}

更新:2019-11-06

ここから最新のSntpClientライブラリを使用します https://github.com/aslamanver/sntp-client-Android

特定のタイムゾーンの時刻を取得します。

SNTPClient.getDate(TimeZone.getTimeZone("Asia/Colombo"), new SNTPClient.Listener() {
    @Override
    public void onTimeReceived(String rawDate) {
        // rawDate -> 2019-11-05T17:51:01+0530
        Log.e(SNTPClient.TAG, rawDate);
    }

    @Override
    public void onError(Exception ex) {
        Log.e(SNTPClient.TAG, ex.getMessage());
    }
});
21
MW_hk