Android 时间同步功能 NTP NITZ

Android中通过NTP服务器获取时间功能源码分析

https://blog.csdn.net/i2cbus/article/details/21550901

1 相关文件:
frameworks\base\services\java\com\android\server\ SystemServer.java
frameworks\base\services\java\com\android\server\ NetworkTimeUpdateService.java
frameworks\base\core\java\android\util\NtpTrustedTime.java
frameworks\base\core\java\android\net\SntpClient.java
frameworks\base\core\res\res\values\config.xml
--------------------- 

几个关键的变量:
mPollingIntervalMs
当NTP时间获取成功后,再次请求NTP时间的间隔
mPollingIntervalShorterMs
当NTP时间获取失败后,再次请求NTP时间的间隔
mTimeErrorThresholdMs
当NTP时间和系统时间不相同时,要更新系统时间的阀值
这几个变量的值是通过资源文件里读取的,配置的地址为config.xml,来看看相关的内容:
---------------------  
作者:i2cbus  
来源:CSDN  
原文:https://blog.csdn.net/i2cbus/article/details/21550901  
版权声明:本文为博主原创文章,转载请附上博文链接!

Android 系统时间更新机制研究

https://blog.csdn.net/pengtgimust/article/details/52469016

Android 7.1.1时间更新NITZ和NTP详解

https://blog.csdn.net/yin1031468524/article/details/65447849?utm_source=tuicool

最近在项目中遇到手机首次插上移动卡时不能自动更新时间的问题,就特意跟了下Android系统中手机时间更新有两种方式NTP和NITZ,下面先来看看NTP和NITZ的简介
NITZ:Network Identity and Time Zone(网络标识和时区),是一种用于自动配置本地的时间和日期的机制,需要运营商支持,可从运营商获取时间和时区具体信息。
NTP:Network Time Protocol(网络时间协议),用来同步网络中各个计算机的时间的协议。在手机中,NTP更新时间的方式是通过GPRS或wifi向特定服务器获取时间信息(不包含时区信息)。
接着我们来看看两种方式具体更新流程

4、NITZ和NTP的总结 
①NITZ的优先级要高于NTP的优先级,当NITZ更新系统时间后,NTP即使触发更新条件,也会检查NITZ更新时间距今是否超过864000000毫秒(10天,config_ntpPollingInterval),若不满10天,则重设Alarm并取消此次NTP更新请求。②NITZ主要依赖于运营商上报,NTP则主要依赖于网络环境,NITZ通过被动接收获取时间,NTP通过访问NtpServer获取网络时间,最后都是通过调用SystemClock.setCurrentTimeMillis更新手机时间。 

Android 通过 NTP 获取网络时间

https://www.jianshu.com/p/ca10702401ba

扫描二维码关注公众号,回复: 5647691 查看本文章

根据系统根据 NTP 获取时间流程,实现自己的网络时间获取也就不难了,主要是 SntpClientNtpTrustedTime 这两个类来实现的,但是是 @hide

猜你喜欢

转载自blog.csdn.net/dc3120/article/details/87931213