Android的TextClock小部件是否使用网络?

时间:2017-04-24 20:41:41

标签: android

我需要创建两个时钟 - 一个用于运行网络时间,另一个用于设备硬件的本地时钟,这样如果您要从我的设备上拔下/取出电池,请将其丢弃一小时,然后重新打开,网络时钟将同步到网络并显示正确的时间,但需要重置硬件时钟(可能使用此网络时间)。

我的问题

我正在研究Android的TextClock小部件,我想我可以将它用于这两个时钟示例中的一个,但我找不到任何文档说明小部件如何获得时间。

任何人都可以提供帮助,并且可能建议替代方案(例如网络时钟,如果这是硬件,反之亦然)?

2 个答案:

答案 0 :(得分:1)

来自source code

private void onTimeChanged() {
    mTime.setTimeInMillis(System.currentTimeMillis()); // mTime is a Calendar
    setText(DateFormat.format(mFormat, mTime));
    setContentDescription(DateFormat.format(mDescFormat, mTime));
}

这是硬件时间。您可能希望查看this answer获取网络时间的方法。

答案 1 :(得分:0)

TextClock,从source code可以看出,只需订阅系统时钟特定广播(即ACTION_TIME_TICKACTION_TIME_CHANGEDACTION_TIMEZONE_CHANGED),然后使用系统时间(System.currentTimeMillis())更新其值。

您可能需要的是NTP同步。您可以使用this现成的客户端。 time.google.com可以使用Google public NTP server