“日期和时间->自动确定日期和时间->使用网络提供时间”功能是怎样实现的?

[DESCRIPTION]

介绍“使用网络提供时间”这个功能的实现方法及可能会遇到的问题

[SOLUTION]

现在android通过网络同步时间有两种方式:NITZ和NTP,它们使用的条件不同,可以获取的信息也不一样;勾选这个功能后,手机首先会尝试NITZ方式,若获取时间失败,则使用NTP方式

1.NITZ(network identity and time zone)同步时间

NITZ是一种GSM/WCDMA基地台方式,必须插入SIM卡,且需要operator支持;可以提供时间和时区信息

中国大陆运营商基本是不支持的

2.NTP(network time protocol)同步时间

NTP在无SIM卡或operator不支持NITZ时使用,单纯通过网络(GPRS/WIFI)获取时间,只提供时间信息,没有时区信息(因此在不支持NITZ的地区,自动获取时区功能实际上是无效的)

NTP还有一种缓存机制:当前成功获取的时间会保存下来,当用户下次开启自动更新时间功能时会结合手机clock来进行时间更新。这也是没有任何网络时手机却能自动更新时间的原因。

此外,因为NTP是通过对时的server获取时间,当同步时间失败时,可以检查一下对时的server是否有效,并替换为其他server试一下。

3.如何判断手机通过哪种方式更新时间

设置一个错误的时区,查看时区是否有被更新正确,若时间和时区都有更新正确,那么就是GSM网路有送NITZ消息上来;

若只有时间更新,而时区没有变化,就是NTP方式,即它通过网络(GPRS/WIFI)连接到server去获取时间。

你可能感兴趣的:(“日期和时间->自动确定日期和时间->使用网络提供时间”功能是怎样实现的?)