是否有不可操作的设备时间?

时间:2014-01-09 13:48:18

标签: android datetime

设备中的时钟是否始终返回特定时间,与用户时间设置和互联网连接无关? 在检查许可证是否已过期时,这样的时间非常有用。

3 个答案:

答案 0 :(得分:4)

  

设备中的时钟是否总是返回一定时间,与用户时间设置和互联网连接无关?

不,抱歉。

答案 1 :(得分:2)

GPS时钟独立于系统时钟/时间设置和网络连接。

您可以通过请求位置修复并访问Location getTime()来获取时间戳。

当然,这不是用于许可证检查目的的防弹,因为它也可能是欺骗性的。 @ CommonsWare的评论说明也值得考虑:

  

请注意,这仅适用于拥有GPS的设备,用户启用了GPS,您可以获取GPS信号,以及您不介意要求获得ACCESS_FINE_LOCATION权限的应用。因此,这并不是“永远”,尽管它可能满足许多​​需求。

答案 2 :(得分:0)

没有时间使用这个用例。 Android中可用时间的Here is a list

  

有三种不同的时钟,不应混淆:

     

System.currentTimeMillis()是标准的“墙”时钟(时间和时间)   date)表示自纪元以来的毫秒数。挂钟可以   由用户或电话网络设置(参见setCurrentTimeMillis(long)),   所以时间可能会不可预测地向后或向前跳跃。这个时钟   只应在与真实世界日期对应时使用   时间很重要,例如在日历或闹钟应用程序中。   间隔或经过时间测量应使用不同的时钟。如果   你正在使用System.currentTimeMillis(),考虑收听   ACTION_TIME_TICK,ACTION_TIME_CHANGED和ACTION_TIMEZONE_CHANGED   意图广播以找出时间的变化。

     

uptimeMillis()是   自系统启动以来以毫秒为单位计算。这个时钟停止了   当系统进入深度睡眠状态时(CPU关闭,显示黑暗,设备   等待外部输入),但不受时钟缩放的影响,   闲置或其他节电机制。这是大多数人的基础   间隔时间,如Thread.sleep(millls),Object.wait(millis)和   System.nanoTime()。这个时钟保证是单调的,并且是   当间隔不跨越设备时适用于间隔定时   睡觉。大多数接受时间戳值的方法目前都期望   uptimeMillis()时钟。

     

elapsedRealtime()和elapsedRealtimeNanos()   返回自系统启动以来的时间,并包括深度睡眠。   这个时钟保证是单调的,并且继续打勾   当CPU处于省电模式时,建议的基础也是如此   通用间隔时间。