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)

相关文章推荐

android手机音乐播放器实现歌词同步

From:http://www.cr173.com/html/20184_1.html

Android手机桌面客户端日历项同步方案

问题 手机是Android系统的,PC机是Windows7系统的,希望能使之同步日历信息、备忘录等。后来找到这个解决方案。除此之外还有别的方案,这只是其中之一。 需要的东西:Google的帐户、M...

Android手机桌面客户端任务项同步方案

本文是《Android手机桌面客户端日历项同步方案》的姊妹篇,专注于任务(Task)的同步。 背景和意义 平时用日历的机会很多,在日历中可以记录约会等信息。但有些事不是安排在确定的时间中的,而是一...

android手机上实现歌词同步

From:http://www.cnblogs.com/wenjiang/archive/2013/05/06/3063259.html  最近在做一款android手机上的音乐播放器,学习到了...

[转]EasyPusher实现安卓Android手机直播推送同步录像功能(源码解析)

EasyPusher是一款非常棒的推送客户端。稳定、高效、低延迟,音视频同步等都特别好。装在安卓上可作为一款单兵设备来用。说到单兵,在项目中通常都需要边传边录的功能,因此后来EasyPusher也加入...

同步Android手机系统日历事件(日程)

之前开发的应用要求的一个功能是同步手机系统日历日程,发现网上也没什么总结好的答案,查阅了些资资料没有发现Android有获取指定日期事件的方法,于是自己就研究了一番。 1、先在Android的配置文件...

android手机上实现歌词同步

最近在做一款android手机上的音乐播放器,学习到了很多东西,像是Fragment,ActionBar的使用等等,这里就先介绍一下歌词同步的实现问题。      歌词同步的实现思路很简单:获取歌词...

安卓Android手机直播推送同步录像功能设计与实现源码

本文转自:http://blog.csdn.net/jyt0551/article/details/58714595EasyPusher是一款非常棒的推送客户端。稳定、高效、低延迟,音视频同步等都特别...

EasyPusher实现安卓Android手机直播推送同步录像功能(源码解析)

EasyPusher是一款非常棒的推送客户端。稳定、高效、低延迟,音视频同步等都特别好。装在安卓上可作为一款单兵设备来用。说到单兵,在项目中通常都需要边传边录的功能,因此后来EasyPusher也加入...
  • jyt0551
  • jyt0551
  • 2017年02月28日 23:23
  • 692

如何将你的android手机和outlook的通讯录同步?

前几天一个朋友给我提的一个问题,他说android手机好像无法和outlook的联系人同步,这个很麻烦,因为他已经用习惯了outlook。当然,他要的不仅仅是备份,而是同步(即其中有一端修改了,另一端...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android手机时间自动同步
举报原因:
原因补充:

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