android网络时间同步总结

本文转自:http://www.cnblogs.com/hoji-real/archive/2011/11/14/2247984.html

最近看了下网络时间同步,总结一下。

整体描述:

android网络时间同步使用NITZ(Network identity and Time Zone)运营商可选服务。

由Ril层主动上报RIL_UNSOL_NITZ_TIME_RECEIVED消息;通知(notify)给CdmaServiceStateTracker和GsmServiceStateTracker;CdmaServiceStateTracker获得网络同步时间,根据DateTimeSetting中自动同步设置,决定是否同步和发送(ACTION_NETWORK_SET_TIMEZONE、ACTION_NETWORK_SET_TIME)广播。

 

其中

/** if time between NITZ updates is less than mNitzUpdateSpacing the update may be ignored. */

private static final int NITZ_UPDATE_SPACING_DEFAULT = 1000 * 60 * 10;
    private int mNitzUpdateSpacing = SystemProperties.getInt("ro.nitz_update_spacing",
            NITZ_UPDATE_SPACING_DEFAULT);

决定同步的时间间隔,如果网络主动上报间隔小于此时间间隔,则忽略该次消息

 

/** If mNitzUpdateSpacing hasn't been exceeded but update is > mNitzUpdate do the update */
    private static final int NITZ_UPDATE_DIFF_DEFAULT = 2000;
    private int mNitzUpdateDiff = SystemProperties.getInt("ro.nitz_update_diff",
            NITZ_UPDATE_DIFF_DEFAULT);

上报的NITZ同步时间与当前处理时间的默认间隔,如果实际间隔大于此间隔,则同步该次时间。

 

同步判断条件

if ((mSavedAtTime == 0) || (timeSinceLastUpdate > nitzUpdateSpacing)
                            || (Math.abs(gained) > nitzUpdateDiff)) {
                        Log.i(LOG_TAG, "NITZ: Auto updating time of day to " + c.getTime()
                                + " NITZ receive delay=" + millisSinceNitzReceived
                                + "ms gained=" + gained + "ms from " + nitz);

                        setAndBroadcastNetworkSetTime(c.getTimeInMillis());

} else {
                        Log.i(LOG_TAG, "NITZ: ignore, a previous update was "
                                + timeSinceLastUpdate + "ms ago and gained=" + gained + "ms");
                        return;
}

 

另,上层Setting App中,DateTimeSetting设置了AutoTime is True,则CdmaServiceStateTracker和GsmServiceStateTracker的监听,根据当前

if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) {
            setAndBroadcastNetworkSetTimeZone(mSavedTimeZone);
            setAndBroadcastNetworkSetTime(mSavedTime
                    + (SystemClock.elapsedRealtime() - mSavedAtTime));
}

广播时间和Time Zone


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android时间同步是指Android设备与网络时间服务器步时间的过程。Android系统提供了自动时间同步功能,可以通过与网络时间服务器进行通信,获取当前的准确时间,并将其应用到设备上。 Android设备在连接到互联网时,会自动与预配置的网络时间服务器进行通信,获取当前的时间信息。这是通过使用网络协议NTP(Network Time Protocol)来实现的。NTP是一种用于同步计算机时钟的协议,它可以通过网络获取准确的时间信息。 Android系统会周期性地与网络时间服务器进行通信,以确保设备上的时间网络时间保持同步。这样可以确保设备上的时间准确无误,对于一些需要依赖时间的应用程序和服务非常重要,比如日历、闹钟、定时任务等。 在Android系统中,时间同步可以通过以下方式进行设置和管理: 1. 自动时间:在系统设置中,可以选择开启自动时间选项,让系统自动与网络时间服务器同步时间。 2. 手动时间:也可以手动设置设备的时间,关闭自动时间选项后,可以手动调整设备的时间。 3. 时间服务器:可以选择不同的网络时间服务器进行同步,系统默认使用Google提供的网络时间服务器。 总结一下,Android时间同步是通过与网络时间服务器通信,获取准确的时间信息,并将其应用到设备上,以确保设备上的时间网络时间保持同步

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值