ユーザーが新しい時間に変わる前の時間を取得できるアプリを設計したいと考えています。私は使っている
android.intent.action.TIME_SET
ユーザーが時刻を変更したことを知るため
例えば。現在の時刻が午後 10 時であるとします。ユーザーがそれを午後 9 時に変更しました。前の時刻である午後 10 時を取得できますか?
少し前に質問されましたが、私は一般的に同じ問題を抱えており、合理的な (効率的な) 解決策を見つけることができません。
思い出してください、ユーザーが時間を変更する前に設定された時間を知りたいです。たとえば、ユーザーが時刻を午後 6 時 12 分から午後 3 時 21 分に変更したとします。私の知る限りでは、 の以前の時間に関する情報はありませんandroid.intent.action.TIME_SET
。しかし、このインテントを処理するとき、実際には午後 6 時 12 分だった時刻が午後 3 時 21 分に設定されていることをどうにかして知りたいと思います (同じ日と仮定します)。
この質問に対する受け入れられた回答によると:
Androidは、ユーザーがデバイスのクロック時間を変更していることを検出します
ネットワークが利用できない状況を処理したい場合は、独自のタイマーをアプリケーションに追加し、自分で時間を測定し、処理するときに
android.intent.action.TIME_SET
この組み込みタイマーから古い時間を取得します。
しかし、これは非常に重い解決策であり、これを行うためのより簡単な方法があるに違いないと私には思えます。
したがって、問題は、上記の状況を処理するための最良の (最も効率的で最も単純な) 方法は何かということです。この問題は私には非常に一般的なように思えますが、公正な解決策を見つけることができませんでした。
System.currentTimeMillis()とSystemClock.elapsedRealtime()の違いを監視してみてください。System.currentTimeMillis() の値はシステム時間の変更の影響を受けますが、SystemClock.elapsedRealtime() の値は影響を受けません。