当设备处于离线状态时,如何获取 Android 设备的正确当前日期和时间

Hos*_*hno 6 java time android date

我创建了一个 Android 应用程序,在这个应用程序中,用户可以保存一些任务。这些任务保存在设备中,当用户上线时,任务将同步到服务器。我需要知道用户保存任务时的正确日期和时间。Calendar.getInstance()类似或返回设备时间的代码new Date(),如果设备时间不正确,任务将保存为错误的日期。对于这个应用程序来说,离线工作非常重要。并且由于此应用程序的繁忙,用户有可能故意更改设备时间。

Hos*_*hno 5

因此,我最终得到了这样一个场景:每次设备重新启动时,用户最多只会连接一次互联网。

BOOT_COMPLETED BroadcastReceiver当用户启动 ( ) 或网络状态更改 ( )时,我尝试连接到 NTP 服务器CONNECTIVITY_CHANGE and WIFI_STATE_CHANGED BroadcastReceiver,然后将该日期存储SystemClock.elapsedRealtime()在数据库中。之后,当我想要获得正确的日期时,我只需获取新值SystemClock.elapsedRealtime()并计算该值与数据库中的 elapsedRealtime 值的差值,并将该差值添加到我存储在数据库中的日期。