如何从网络提供商处获取日期和时间?
Posted
技术标签:
【中文标题】如何从网络提供商处获取日期和时间?【英文标题】:How can I get the date & time from the network provider? 【发布时间】:2011-11-01 16:47:26 【问题描述】:有没有办法以编程方式从网络提供商处获取日期和时间?可能与我们从网络提供商获取位置的方式相同。
【问题讨论】:
【参考方案1】:您可能需要使用自定义 NITZ 或 NTP 库
http://groups.google.com/group/android-developers/browse_thread/thread/d5ce3bcfe17e272b?pli=1因此,请注意 Android 使用运营商提供的 NITZ 事件 正确设置系统日期和时间。 Android 也回退到 当没有可用的蜂窝网络时自动网络 NTP。
http://en.wikipedia.org/wiki/NITZ
currentTimeMillis() 提供的时间通常是最好的 可用时间,这是设备上所有服务使用的时间, 比如日历和闹钟。
然而
但是 NTP API 不是 Java 代码可以访问的地方,这 意味着我们将重新使用现有的 Java NTP/SNTP 客户端库,如果 无论我们是否在网络上,我们都需要准确的时间 这是 NITZ 的能力。
Java NTP 库
您可以从
找到 Java NTP 库的简单实现 support.ntp.org【讨论】:
为什么它不是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 这个不获取时间,它显示最后一个位置被获取的那一刻的时间。如果你不动而不动怎么办?您的位置不会改变,因此您不会更新时间?以上是关于如何从网络提供商处获取日期和时间?的主要内容,如果未能解决你的问题,请参考以下文章