【问题标题】:Android - Get current time without dependency on device's clockAndroid - 获取当前时间而不依赖于设备的时钟
【发布时间】:2015-01-14 03:56:17
【问题描述】:

我注意到 System.currentTimeMillis() 时间取决于设备。如果我更改设备时钟上的时间,此方法将返回不同的答案。

例如:如果现在的实际时间是 10:00,并且我将设备上的时钟更改为 9:30,那么 System.currentTimeMillis() 将返回 9:30 时间(以毫秒为单位......)。

我也尝试过this answer 和其他一些答案,但没有发现任何有用的东西。 我应该声明我的应用程序主要是离线工作的。 有没有办法在没有外部 API 的情况下获取实时的当前时间(与设备无关)?

【问题讨论】:

  • 已编辑。希望越来越好。

标签: android time system-clock


【解决方案1】:

如果不是“离线”部分,我会建议使用时间服务器,但鉴于您的应用大部分时间都处于离线状态,这可能不是一个好的解决方案。

如果您不需要实际时间,而只需要一个无法混淆的时间,您可以使用SystemClock.elapsedRealtime(),它会为您提供自设备上次启动以来的时间。

您还可以将时间服务器和 SystemClock.elapsedRealtime() 结合起来:从计时器服务器获取时间一次(例如在启动后),然后将 elapsedRealtime() 添加到该初始值(减去获得时间的 elapsedRealtime 值) timerserver 值)。

【讨论】:

  • 如果该时钟在每次设备关闭时都没有重置,那将会很有帮助。我想我将不得不使用时间服务器。谢谢。
  • 不客气。也许你可以将它们两者结合起来。从计时器服务器获取时间一次(例如在启动后),然后将 elapsedRealtime() 添加到该初始值(减去获得 timerserver 值时的 elapsedRealtime 值。
【解决方案2】:

如果您使用 GPS 位置提供程序,getTime() 将返回源自 GPS 信号的 UTC 时间,而不是设备时间。 GPS 位置提供程序可以离线工作 - 但与在线访问 A-GPS 信息相比,获得修复的速度要慢得多。

【讨论】:

  • 不幸的是我无法使用的另一个很好的答案,因为很难向用户解释需要此权限。谢谢
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2016-03-01
  • 2015-10-24
  • 2019-02-02
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
相关资源
最近更新 更多