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