`
wx1568444409
  • 浏览: 14506 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android 时间同步

 
阅读更多

   在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方式进行时间同步时不能同步时区,需要自己先去掉自动同步并设置时区后再设置自动同步,这样才能进行网络时间的同步更新。

转载于:https://my.oschina.net/u/175434/blog/699994

分享到:
评论

相关推荐

    Android系统时间同步服务

    3. **Android时间同步流程**: - 定期触发:系统会在特定间隔(如每天或每小时)自动启动时间同步,这个间隔可以通过系统设置进行调整。 - 用户触发:用户手动点击“同步”按钮或者开启飞行模式后再关闭,也会触发...

    基于NTP的Android时间同步系统设计与实现.pdf

    基于NTP的Android时间同步系统设计与实现.pdf

    NTP时间同步在Android平台的应用

    随着全球信息化和通络通讯技术的迅速发展,人们对时间的精准性要求越来越高。本文通过对NTP 网络时间同步协议和原理的研究,分析了时间同步的架构与流程,提出了NTP 网络时间同步在Android 平台的实现方案。

    android手机时间自动同步

    在Android系统中,时间同步是一项重要的功能,确保设备时间的准确性和一致性。通常,Android设备会通过NITZ(Network Identity and Time Zone)服务来自动同步时间,这依赖于移动网络运营商提供的时间信息。NITZ...

    NTP内网时间同步

    在IT行业中,时间同步是一项至关重要的任务,尤其是在网络通信、数据记录和系统管理等领域。"NTP内网时间同步"的标题和描述指向了一个具体的解决方案,即使用Network Time Protocol(NTP)在局域网(内网)环境中...

    Android 9.0增加系统同步时间戳接口,同步本机时间

    1. **系统时间同步**:Android系统以往已有与网络时间服务器同步时间的功能,如NTP(Network Time Protocol)。但在Android 9.0中,可能进一步强化了这一功能,提供了更便捷的API接口,允许应用程序或系统服务直接...

    Android中实现用命令行同步网络时间

    主要介绍了Android中实现用命令行同步网络时间,本文讲解使用BusyBox实现同步网络时间,并给出了详细操作步骤,需要的朋友可以参考下

    NTP时间同步

    总结,NTP时间同步在Android系统中扮演着不可或缺的角色,它确保了设备时间的准确性,从而支持了众多功能的正常运行。理解和掌握NTP的工作原理以及如何在Android环境中实现它是每个Android开发者必备的知识点。

    android http同步与异步通讯包

    在Android应用开发中,网络通信是必不可少的一部分,用于获取服务器数据或者发送用户操作到服务器。本资源提供的"android ...通过研究和使用这些源码,你可以更好地理解和掌握Android中同步与异步网络请求的实现原理。

    局域网时间同步工具

    3. **Android时间同步**:安卓设备默认会通过互联网上的NTP服务器同步时间,但在局域网内,可以通过设置本地NTP服务器或特定的局域网时间同步工具来优化同步效率。 ### 局域网内时间同步工具 "ligengdipan-4142155...

    同步系统时间功能实现

    它允许设备通过与NTP服务器通信来校准其时钟,以确保全球范围内的设备时间同步。 2. **Android系统时间设置**:在Android系统中,时间可以分为用户可修改的时间和系统时间。用户时间可通过设置应用更改,而系统时间...

    安卓手机自带同步时间,Android NTP获取时间 网络时间同步

    安卓手机自带同步时间,Android NTP获取时间 网络时间同步Android 获取时间demo包含apk 和里面的代码本文 不是系统ntp获取时间代码,不过是有借鉴系统ntp service代码开发的demo

    android 歌词同步 DEMO

    在Android平台上,歌词同步是一项常见的功能,特别是在音乐播放应用中,它可以为用户提供更好的听歌体验。这个"android 歌词同步 DEMO"是用于展示如何在Android应用中实现实时歌词同步显示的一个示例项目。下面我们...

    android基于UDP局域网实现视频同步播放

    1. **时间同步**:所有设备需要有一个共同的时间基准,可以使用NTP(Network Time Protocol)服务或者在启动时同步一个参考时间。 2. **数据同步**:确保每个设备在同一时间点播放相同的数据帧。发送端需要按照特定...

    Android代码-开源文件同步安卓版

    1. **多线程编程**:Android应用的主进程通常不允许执行长时间运行的任务,以避免阻塞UI。因此,文件同步操作应该在后台线程中进行,以免影响用户体验。 2. **权限管理**:由于涉及到读写文件和网络通信,应用需要...

    android 网络音乐 歌词同步

    在Android平台上开发一款网络音乐播放应用,实现歌词同步功能,是一项技术挑战但也充满乐趣。这里我们探讨的关键知识点包括Android应用程序开发、网络数据获取、JSON解析、音频播放以及歌词同步技术。 首先,...

    android音乐播放器(歌词同步)

    在Android平台上开发一款音乐播放器并实现歌词同步是一项复杂但有趣的技术挑战。在这个项目中,开发者需要处理音频播放、UI设计、数据加载以及歌词与音乐的精确匹配等多个方面。以下是一些关键的知识点: 1. **...

    android修改头像并同步服务器

    在Android应用开发中,"修改头像并同步服务器"是一个常见的功能需求,用户可以自定义他们的个人形象,而这些更改需要实时同步到云端服务器,以便其他设备或服务能够获取最新的头像信息。以下是对这个功能的详细解释...

    Android播放器歌词同步

    在Android平台上开发一款音乐播放器,歌词同步是一个重要的功能,它能提升用户的听歌体验,让听众更好地理解和欣赏歌曲。本文将深入探讨如何在Android应用中实现歌词同步这一技术。 首先,我们需要理解歌词同步的...

    android 线程同步

    ### Android线程同步详解 在Android开发过程中,线程同步是一项非常重要的技术,它能够确保多线程环境下的数据安全性和程序稳定性。本文将详细解析Android中的线程同步机制,包括Mutex、Condition以及Barrier等核心...

Global site tag (gtag.js) - Google Analytics