android手机时间自动同步

转载 2012年03月22日 08:58:18
在Android2.3.4系统中,Settings->Date & time->Automatic项打上后,时间会通过网络进行同步,而Android默认使用的是NITZ来获取移动网络时间,需要有移动网络服务商的支持才能使用,而有些Android产品只支持WIFI等无线网络,而不支持移动网络,此时就需要采用SNTP方式来获取网络时间进行同步了,相应需要修改到的文件为frameworks/base/telephony/java/com/android/internal/telephony /cdma/CdmaServiceStateTracker.java和frameworks/base/telephony/java/com /android/internal/telephony/gsm/GsmServiceStateTracker.java这两个文件,需要修改的都是一样的内容,如下:
    添加如下内容:
    import android.net.SntpClient;
    修改如下内容:
    把
    private void revertToNitz() {
        if (Settings.System.getInt(phone.getContext().getContentResolver(),
                Settings.System.AUTO_TIME, 0) == 0) {
            return;
        }
        Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone
                + "' mSavedTime=" + mSavedTime
                + " mSavedAtTime=" + mSavedAtTime);
        if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) {
            setAndBroadcastNetworkSetTimeZone(mSavedTimeZone);
            setAndBroadcastNetworkSetTime(mSavedTime
                    + (SystemClock.elapsedRealtime() - mSavedAtTime));
        }
    }
    修改为:
    private void revertToNitz() {
        if (Settings.System.getInt(phone.getContext().getContentResolver(),
                Settings.System.AUTO_TIME, 0) == 0) {
            return;
        }
        Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone
                + "' mSavedTime=" + mSavedTime
                + " mSavedAtTime=" + mSavedAtTime);
        if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) {
            setAndBroadcastNetworkSetTimeZone(mSavedTimeZone);
            setAndBroadcastNetworkSetTime(mSavedTime
                    + (SystemClock.elapsedRealtime() - mSavedAtTime));
            return;
        }
        int tryCount = 5;
        SntpClient client = new SntpClient();

        Log.i(LOG_TAG, "revertToNitz new sntpclient");

        for(int i = 0; i < tryCount; i++){
            if(client.requestTime("north-america.pool.ntp.org", 10000)) {
                long cachedNtp = client.getNtpTime();
                long cachedNtpTimestamp = SystemClock.elapsedRealtime();

                Log.i(LOG_TAG, "Sntp NtpTime = " + cachedNtp);

                setAndBroadcastNetworkSetTime(cachedNtp
                   + (SystemClock.elapsedRealtime() - client.getNtpTimeReference()));
                return;
            }
        }
    }
    当不支持NITZ获取时间同步时就使用SNTP方式获取时间进行同步。不过使用SNTP方式进行时间同步时不能同步时区,需要自己先去掉自动同步并设置时区后再设置自动同步,这样才能进行网络时间的同步更新。

时间同步 受地区 卡类别 基站 运营商 等影响大部分android手机时间同步都不怎么顺畅
据我所知目前移动神州行卡在打开了GPRS 的android手机上是可以的,除非比较搓手机厂商没把该功能做好(例如中兴u880)

linux配置多台服务器系统时间一致

正规的环境的话,一般会有几台到多台时间服务器,局域网的中的其他服务器都以改机器时间为准。如果没有时间服务器的话,可以让服务器A作为时间服务器,服务器B的时间同步服务器A的。...
  • x6_9x
  • x6_9x
  • 2016年11月24日 17:33
  • 4767

CentOS7 多台电脑使用NTP进行时间同步

1. NTP时钟同步方式说明NTP在linux下有两种时钟同步方式,分别为直接同步和平滑同步: 直接同步 使用ntpdate命令进行同步,直接进行时间变更。如果服务器上存在一个12点运行的任务...
  • to_Baidu
  • to_Baidu
  • 2016年09月17日 11:22
  • 914

设置CentOS Linux系统时间自动同步

新装的CentOS系统服务器可能设置了错误的,需要调整时区并调整时间,如下是CentOS系统使用NTP来从一个时间服务器同步。 第一步:把当前时区调整为上海就是+8区,想改其他时区也可以去看看/u...
  • wcb2003
  • wcb2003
  • 2013年12月30日 09:37
  • 3377

配置Linux下的时间服务器,让一批机器和一台机器时间同步【设置一台专门用来同步时间的服务器名为timeserver,很实用】

Linux自带了ntp服务 -- /etc/init.d/ntpd,这个服务不仅可以设置让本机和某台/某些机器做时间同步,他本身还可以扮演一个time server的角色,让其他机器和他同步时间。配置...
  • buster2014
  • buster2014
  • 2015年04月28日 09:43
  • 3084

Android 时间同步原理分析

转自http://zhengken.me/2016/09/26/the-principle-of-date-time-sync/#more 前言 在 Android 手机中,我们打开设置可...
  • zhongshujunqia
  • zhongshujunqia
  • 2016年12月02日 08:38
  • 2692

设置linux服务器定时与时间服务器同步

在一些大公司经常出现这样一个情况:公司或一些机关单位的内部业务系统的应用服务器以及数据都是做的多机集群部署而且基本都是linux系统, 而且都是内部网,不与外网通讯的。这样经常就会出现一个情况,我发送...
  • ahxxx2
  • ahxxx2
  • 2015年03月12日 10:50
  • 2476

Linux中设置和同步时间

准确的系统时间是稳定服务的基础,本文介绍与时间相关的Linux命令,以及如何为自己的Linux服务器维护准确的时间。 时间 一台Linux服务器有两个时间源,一个是硬件时间,即服务器硬件CMOS维...
  • DViewer
  • DViewer
  • 2016年10月30日 16:00
  • 4020

使用ntp服务同步时间

配置ntp服务
  • u013712826
  • u013712826
  • 2017年03月13日 23:23
  • 391

Android 同步网络时间

android 网络时间同步
  • autumn_xl
  • autumn_xl
  • 2016年05月25日 17:10
  • 4738

linux 服务器时间同步

一:NTP服务    1.      NTP(Network Time Protocol 网络时间协议) 是用来使计算机时间同步化的一种协议.可以是使计算机对其服务器或者时钟源做同步化.他可以提供...
  • javald
  • javald
  • 2016年08月24日 12:21
  • 1040
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android手机时间自动同步
举报原因:
原因补充:

(最多只允许输入30个字)