同步Android和PC的系统时钟

时间:2012-10-10 13:47:21

标签: android tcp synchronization

我有一个Android应用程序通过TCP套接字发送到另一个Android手机或PC,我想同步发送器和接收器时钟的时钟。我在android上尝试过SystemClock.setCurrentTimeMillis,但即使使用android.permission.SET_TIME权限也无法正常工作。 还有另一种方式吗?

2 个答案:

答案 0 :(得分:5)

不幸的是,您无法从代码中更改Android手机的时间,因为您没有设置android.permission.SET_TIME的权限。您只能在root手机上执行此操作。

那么为什么不让你的两个应用程序从像internet time这样的可靠来源进行更新。 也许使用android sntp client

 //Sample usage:
 SntpClient client = new SntpClient();
 if (client.requestTime("time.nist.gov")) {
    long now = client.getNtpTime() + SystemClock.elapsedRealtime() -    client.getNtpTimeReference();
  }

或者您可以做的是:将手机上的当前时间发送到电脑,并通过您用于接收数据的程序设置电脑的时间。 另请看这里:set mobile time and date

答案 1 :(得分:1)

我不知道你的应用程序但是,同步这样的时钟似乎是一个小补丁。我建议您使用NTP(网络时间协议)来执行此操作。 Android以及Windows,MAC和Linux机器都可以做到这一点。您的Android机器将从手机信号塔或WIFI执行此操作。我最近移植了一个适用于Android的单元调制解调器,我对日志进行了广泛的查看,我可以告诉你,每次网络连接时,每天都会进行多次时间同步。即使在切换网络源(小区或wifi)时,它也非常准确。它很简单,您不必编写任何代码,只需将其配置为启用它即可。

结果是从官方网络源设置的PC和Android时间。