同步分两种:NITZ:需要运营商的支持,通过TOD(短波跳频通信)时间信息法进行同步,实现运营商网络侧和手机modem侧的时间同步。然后modem侧通过RIL主动上报时间和时区信息。
SNTP:从网络侧获取SNTP的时间,采用SNTP无法更新时区。
当选中自动更新时,在GsmServiceStateTracker.java和NetworkTimeupdateService.java中注册的contentObserver会分别触发,GsmServiceStateTracker中会发送在ACTION_NETWORK_SET_TIME的广播,给mNitzTimeSetTime赋值。NetworkTimeupdateService中会发送message,执行onPollNetworkTime(),如果NITZ时间不是NOT—SET,并且更新的时间小于POLLING——INTERVAL——MS,就直接更新NITZ的时间,否则使用SNTP更新时间。
SNTP:从网络侧获取SNTP的时间,采用SNTP无法更新时区。
当选中自动更新时,在GsmServiceStateTracker.java和NetworkTimeupdateService.java中注册的contentObserver会分别触发,GsmServiceStateTracker中会发送在ACTION_NETWORK_SET_TIME的广播,给mNitzTimeSetTime赋值。NetworkTimeupdateService中会发送message,执行onPollNetworkTime(),如果NITZ时间不是NOT—SET,并且更新的时间小于POLLING——INTERVAL——MS,就直接更新NITZ的时间,否则使用SNTP更新时间。
可参考M812——CMCC中PR-699698
如果出现问题,查看
1.NetworkTimeUpdateService monitor WI-FI 和 Mobile网络状态。
2.只有在数据网络处于In Service状态下才去NTP server同步时间。
3.提供其他3个备份的NTP Server去同步时间。
如果测试中发现问题,首先确定当前网络运营是否支持NITZ,如果支持NITZ,而时间未能同步,请从开机就抓取QXDM
log和tcpdump log。
如果当前网络运营不支持NITZ,在确保数据网络正常的情况下从开机就抓取tcpdump
log。