【问题标题】:How can I get the date & time from the network provider?如何从网络提供商处获取日期和时间?
【发布时间】:2011-11-01 16:47:26
【问题描述】:

有没有办法以编程方式从网络提供商处获取日期和时间?可能与我们从网络提供商获取位置的方式相同。

【问题讨论】:

    标签: android datetime time


    【解决方案1】:

    您可能需要使用自定义 NITZ 或 NTP 库

    因此,请注意 Android 使用运营商提供的 NITZ 事件 正确设置系统日期和时间。 Android 也回退到 当没有可用的蜂窝网络时自动网络 NTP。

    http://en.wikipedia.org/wiki/NITZ

    currentTimeMillis() 提供的时间通常是最好的 可用时间,这是设备上所有服务使用的时间, 比如日历和闹钟。

    然而

    但是 NTP API 不是 Java 代码可以访问的地方,这 意味着我们将重新使用现有的 Java NTP/SNTP 客户端库,如果 无论我们是否在网络上,我们都需要准确的时间 这是 NITZ 的能力。

    Java NTP 库

    您可以从

    找到 Java NTP 库的简单实现

    【讨论】:

    • 为什么它不是android自己提供的,因为它是开发者应用程序的基本需求,如果我们使用日历,任何人都可以通过更改时间来愚弄应用程序
    【解决方案2】:

    答案是肯定的 我尝试了以下代码以从网络提供商处获取时间 为此使用 loc.getTime()

        @Override
        public void onLocationChanged(Location loc)
        {
            loc.getLatitude();
            loc.getLongitude();
    
            latitude.setText(""+loc.getLatitude());
            longitude.setText(""+loc.getLongitude());
            time.setText(""+loc.getTime());
        }
    

    【讨论】:

    • 这不是最后一次知道位置的确切时间吗?而且不是来自运营商,而是来自 GPS(虽然后者更准确)
    • 它可能来自任何一个,有一个 LocationManager.GPS_PROVIDER 和一个 LocationManager.NETWORK_PROVIDER
    • 这个不获取时间,它显示最后一个位置被获取的那一刻的时间。如果你不动而不动怎么办?您的位置不会改变,因此您不会更新时间?
    猜你喜欢
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 2014-09-06
    相关资源
    最近更新 更多