6

System.currentTimeMillis() 時間はデバイスに依存していることに気付きました。デバイスの時計の時刻を変更すると、このメソッドは別の回答を返します。

例: 現在のリアルタイムが 10:00 で、デバイスの時計を 9:30 に変更すると、System.currentTimeMillis() は 9:30 の時刻 (ミリ秒単位) を返します。 この回答と他の回答

も試しましたが、役立つものは何も見つかりませんでした。私のアプリはほとんどオフラインで動作します。外部 API を使用せずに実際の現在の時刻 (デバイスに依存しない) を取得する方法はありますか?

4

2 に答える 2

8

「オフライン」の部分がなければ、タイム サーバーを使用することをお勧めしますが、アプリがほとんどの場合オフラインであることを考えると、これは適切な解決策ではない可能性があります。

実際の時間が必要ではなく、台無しにできない時間だけが必要な場合は、SystemClock.elapsedRealtime()を使用して、デバイスが最後に起動してからの時間を取得できます。

タイム サーバーと SystemClock.elapsedRealtime() を組み合わせることもできます: タイマー サーバーから時間を 1 回取得し (たとえば、起動後)、それ以降、その初期値 (timerserver 値を取得したときの経過リアルタイム値を差し引いた値) にeplapseRealtime() を追加します。 .

于 2014-11-17T09:37:43.830 に答える
4

GPS ロケーション プロバイダーを使用する場合getTime()、 は、デバイスの時刻ではなく、GPS 信号から派生した UTC 時刻を返します。GPS ロケーション プロバイダーはオフラインでも動作しますが、A-GPS 情報にアクセスできる場合、オンラインに比べて修正を取得するのに時間がかかります。

于 2014-11-17T09:44:26.940 に答える