搜索互联网并在此处询问后。我发现从simcard获取准确时间的解决方案是使用一种名为NITZ(网络身份和时区)的服务,当用户在设置中指定“自动时间同步”时,它会用来设置时间。
我很想知道如何实现这样的东西,并在我的应用程序中使用它来获得准确的时间。
它似乎是android使用一种名为'revertToNitz()'的方法来同步时间。
我也想用它。我感谢任何帮助。
答案 0 :(得分:2)
我很想知道如何实现这样的功能并在我的应用中使用它来获得准确的时间。
这由操作系统自动处理。只需使用System.currentTimeMillis()
或任何其他标准Java方式来获取时间。应用无法访问运营商提供的NITZ信号。
看来android使用一种名为'revertToNitz()'的方法来同步时间。
Android SDK中没有revertToNitz()
,我甚至在源代码中也看不到它。
答案 1 :(得分:0)
Android(NITZ)中的蜂窝网络设置时间由OS实现。点击http://androidxref.com/4.4.2_r2/xref/frameworks/base/services/java/com/android/server/NetworkTimeUpdateService.java
答案 2 :(得分:0)
它由Android OS实现。如果'自动时间'选项由用户打开,您只需使用标准的系统时间相关API即可获得准确的NITZ或NTP时间。你不必再关心它了。
并且在ServiceStateTracker.java中实现了revertToNitzTime()函数。当手机接收到NITZ时,无论用户是否打开“自动时间”。选项,Android会在NITZ中缓存此报告的时间。稍后打开此选项时,其缓存值将应用于系统时钟。此操作称为“revertToNitzTime'。
系统时间不仅受NITZ的影响,还受NTP时间的影响。甚至GPS时间都包含在某些第三方Android系统中。