我注意到 System.currentTimeMillis() 时间取决于设备。如果我更改设备时钟上的时间,此方法将返回不同的答案。
例如:如果现在的实际时间是 10:00,并且我将设备上的时钟更改为 9:30,那么 System.currentTimeMillis() 将返回 9:30 的时间(以毫秒为单位……)。
我也试过这个答案和其他一些答案,但没有发现任何有用的东西。我应该声明我的应用程序主要是离线工作的。有没有办法在没有外部 API 的情况下获得真正的当前时间(与设备无关)?
问问题
4919 次
2 回答
8
如果不是“离线”部分,我会建议使用时间服务器,但鉴于您的应用程序大部分时间都处于离线状态,这可能不是一个好的解决方案。
如果您不需要实际时间,而只需要一个不能弄乱的时间,您可以使用SystemClock.elapsedRealtime(),它为您提供自设备上次启动以来的时间。
您还可以结合时间服务器和 SystemClock.elapsedRealtime():从计时器服务器获取时间一次(例如,在启动后),然后将 elapsedRealtime() 添加到该初始值(减去获得 timerserver 值时的 elapsedRealtime 值) .
于 2014-11-17T09:37:43.830 回答
4
如果您使用 GPS 位置提供程序,getTime()
将返回从 GPS 信号导出的 UTC 时间,而不是设备时间。GPS 位置提供程序可以离线工作 - 但与在线访问 A-GPS 信息相比,获得修复的速度要慢得多。
于 2014-11-17T09:44:26.940 回答