Android - 获取当前时间而不依赖于设备的时钟

标签 android time system-clock

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

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

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

最佳答案

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

如果你不需要实际时间而只是一个不能被弄乱的时间,你可以使用SystemClock.elapsedRealtime()这为您提供了自设备上次启动以来的时间。

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

关于Android - 获取当前时间而不依赖于设备的时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26969288/

相关文章:

Android Api 23 更改导航 View headerLayout textview

java - JAVA生成唯一随机数

java - 将 OpenCv DCT 转换为 Android

javascript - 标准 JavaScript 中的日期格式

python - 如何从另一个进程中杀死一个进程?

precision - 有关时钟精度/准确度的声明有何含义?

java - 如何在onProgressChanged之外获取seekBar的实时值?

android - 获取Android上传递的实时时间

c# - Thread.Sleep 现在使用高分辨率计时器还是 Windows 10 更改了默认系统时钟频率?

java - 抛出奇怪的 org.threeten.bp.DateTimeException?