【问题标题】:Is Android using NTP to sync time?Android 是否使用 NTP 同步时间?
【发布时间】:2013-01-01 02:32:13
【问题描述】:

Android 设备是否使用网络时间协议 (NTP) 来同步时间?

在我的设备设置中,我看到一个带有以下文本“与网络同步”的复选框,但我不知道他们是否使用 NTP。

我在使用 GPS 的学士论文中需要这个。为了获得准确的 GPS 信号,接收器应该有一个准确的时钟。

我在网上找到了这个博客条目,但我不确定他说的是不是真的:Speeding up NTP, GPS Lock in Android

【问题讨论】:

    标签: android time gps ntp


    【解决方案1】:

    我知道 Android ICS 使用了一个名为:NetworkTimeUpdateService 的自定义服务。该服务还通过NtpTrustedTime单例实现了NTP时间同步。

    NtpTrustedTime中,默认的NTP服务器是从Android系统字符串源请求的:

    final Resources res = context.getResources();
    
    final String defaultServer = res.getString(
                                    com.android.internal.R.string.config_ntpServer);
    

    如果系统设置中的自动时间同步选项被选中并且没有 NITZ 时间服务可用,则时间将与来自com.android.internal.R.string.config_ntpServer 的 NTP 服务器同步。

    要获取com.android.internal.R.string.config_ntpServer 的值,可以使用以下方法:

        final Resources res = this.getResources();
        final int id = Resources.getSystem().getIdentifier(
                           "config_ntpServer", "string","android");
        final String defaultServer = res.getString(id);
    

    【讨论】:

    • 有趣的是,看起来他们已将其硬编码为 2.android.pool.ntp.org。 820行:android.googlesource.com/platform/frameworks/base/+/…
    • 是的,但这仅适用于股票 android。一些制造商更改了服务器字符串。
    • 注意:1)如果你想改变ntp服务器,Android在启动时只查看config_ntpServer的值,所以你需要重启(或重启NetworkTimeUpdateService)才能使用新的值。 2) 自 2012 年以来,Android 仅在启动后每 10 天检查一次时间。 (gerrit 中有一个补丁可以恢复原来的 1 天超时) 3) 让 Android 检查时间的一个技巧是关闭 Settings.Global.AUTO_TIME 然后再打开。这相当于 Settings.app 的日期和时间部分中的复选框。 4) Android 不使用 NTP,它很少使用 SNTP 进行轮询。
    • 所以当你说:"1) 如果你想改变 ntp 服务器,Android 只在启动时查看 config_ntpServer 的值,所以你需要重启(或重启 NetworkTimeUpdateService)才能使用新值”,究竟我应该如何更改值?
    【解决方案2】:

    我想问一下Android设备是否使用网络时间协议(ntp)来同步时间。

    对于一般时间同步,无线提供商提供NITZ information 的具有电话功能的设备将使用 NITZ。我的理解是 NTP 用于其他情况:无 NITZ 的无线提供商、仅 WiFi 等。

    您引用的博客文章暗示了另一种情况:支持 GPS 的按需时间同步。这当然是可以想象的,虽然不知道有没有用。

    【讨论】:

      【解决方案3】:

      我有一台装有 Android 4.1.1 的三星 Galaxy Tab 2 7.0。显然它不会同步到 ntp。我加载了一个应用程序,它说我的平板电脑与 ntp 相差 20 秒,但它无法设置它,除非我根设备。

      【讨论】:

      • 似乎只能手动更新...我的每 6 个月增加 1.5 分钟。
      • Tab 2 已使用 Android 4.2.2 达到顶峰,并且没有 @Harvey 在他对已接受答案的评论中提到的复选框。我的时间向后漂移。下次我不能乱码时,我必须尝试 GPS 同步。
      【解决方案4】:

      不是对您问题的确切答案,而是一些信息:如果您的设备确实使用 NTP 时间(例如,如果它是没有 3G 或 GPS 功能的平板电脑),则服务器可以在/system/etc/gps.conf 中进行配置 - 显然这个文件只能使用 root 权限编辑,但在非 root 设备上可以查看。

      【讨论】:

      • 好的,该文件已在我的三星 Galaxy tab S 上显示并完成。你知道如何启用内置 NTP 吗?
      • @user2284570 我认为上面的一些答案会给你提供比我现在更好的信息
      • /文件夹内没有gps.conf文件。可能是什么原因?我的设备已植根。
      • @Hilal 这个问题/答案已有 6 年历史了,也许 Android 从那时起发生了变化。抱歉,我无法及时更新此答案。
      【解决方案5】:

      您可以使用全局变量NTP_SERVER、属性ro.NTP_SERVER 或通过在/etc 下创建一个名为ntp.conf 的文件来覆盖ntp,如下所述:
      https://developers.google.com/time/guides#linux_ntpd_or_chrony

      Linux 说明适用于 Android。

      您始终可以通过代理将来自您设备的流量重定向到在同一网络上的另一台计算机上运行的 burp 数据包侦听器,以轻松检查所有流量。无论 NTP 设置如何,您设备中的 SIM 卡都会同步,默认情况下,您的路由器也可以充当网络的 NTP 服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-04
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        • 1970-01-01
        • 1970-01-01
        • 2021-07-17
        • 2012-08-11
        相关资源
        最近更新 更多