Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓与PC系统时钟同步_Android_Tcp_Synchronization - Fatal编程技术网

Android 安卓与PC系统时钟同步

Android 安卓与PC系统时钟同步,android,tcp,synchronization,Android,Tcp,Synchronization,我有一个Android应用程序通过TCP套接字发送到另一个Android手机或PC,我想同步发送方和接收方的时钟。我在android上尝试过SystemClock.setCurrentTimeMillis,但即使使用android.permission.SET_TIME权限,它也不起作用。 还有其他方法吗?不幸的是,您无法从代码更改android手机的时间,因为您没有设置android.permission.SET_time的权限。您只能在根手机上进行设置 那么,为什么不让您的两个应用程序都从一

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

不幸的是,您无法从代码更改android手机的时间,因为您没有设置android.permission.SET_time的权限。您只能在根手机上进行设置

那么,为什么不让您的两个应用程序都从一个可信的源进行更新呢。 也许用

或者你可以做的是:通过你用来接收数据的程序,将手机上的当前时间发送到电脑并设置电脑的时间。
请看这里:

我不知道您的应用程序,但是,像这样同步时钟似乎有点麻烦。我建议您使用NTP(网络时间协议)这样做。Android以及Windows、MAC和Linux机器都可以做到这一点。您的android机器将通过手机发射塔或WIFI实现这一点。我最近为Android移植了一个手机调制解调器,我仔细查看了日志,我可以告诉你,时间同步经常发生,每次网络连接,一天几次。即使在切换网络源(手机或wifi)时也非常准确。它很简单,您不必编写任何代码,只需将其配置为启用即可


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

感谢sokie的回复,client.requestTime(“time.foo.com”,30000)的返回值为false?你认为我应该使用另一台服务器吗?这里的问题是什么?time.foo.com就是一个例子,不存在网站,如果这有误导性,我很抱歉。你应该找到一个方便的服务器列表,或者直接使用time.nist.gov,根据你的位置和ipGreat在服务器上分配负载。谢谢sokie,现在它可以工作了!!问题是Sntpclient类在主线程上进行网络连接,所以我遇到了一个例外,因为我有android 4.0.3。我已经更改了类,并将时间请求抛出UDP套接字放在一个单独的线程中,以避免出现异常!
 //Sample usage:
 SntpClient client = new SntpClient();
 if (client.requestTime("time.nist.gov")) {
    long now = client.getNtpTime() + SystemClock.elapsedRealtime() -    client.getNtpTimeReference();
  }