首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过GPS时间同步Android设备?

通过GPS时间同步Android设备?
EN

Stack Overflow用户
提问于 2011-11-21 18:21:06
回答 3查看 23.7K关注 0票数 21

简短版本:

问题:我需要几个Android设备在完全相同的时间(大约100毫秒内)做一些事情。例如,我希望所有设备都能在预先确定的时间点播放某个声音。

问:我可以使用GPS时间来确保设备的时钟同步吗?

较长版本:

几个拥有Android设备的人在同一个户外位置(为了一些特定的体育赛事)。所有设备应该在完全相同的时间发出特定事件的信号。(什么时间将事先确定,他们是否在那个时间做并不重要,只要他们在同一时间做就行了)。FWIW:这些活动将帮助人们在同一时间开始他们的体育活动。

以下是我可以做的假设:

  • 可能有也可能没有小区覆盖。(它在户外,可能远离市区)
  • 这些设备可能连接到互联网,也可能没有连接到互联网。(有些人可能没有数据计划)
  • 设备可以相互通信。如果这些设备没有连接到互联网,它们将通过wifi连接(尽管wifi可能没有互联网gateway).
  • The设备在室外(而不是在建筑物内)。(这很好,这意味着所有设备都可以获得GPS修复)
  • 设备在物理上彼此接近(即,在300 m2内)。(不确定这是否重要)

我不能使用内部时钟来知道何时播放事件:用户可以手动更改时间,即使将设备设置为从蜂窝网络获取时间,该网络也可能无法提供准确的时间。两个设备可能登记到不同的网络中,因此它们的时间可能不会很好地同步。

在应用程序启动时,每个设备都可以要求GPS定位,并保存GPS时间与其内部时钟之间的差值。现在,主机可以根据这个GPS时间宣布事件(通过使用它的内部时钟并减去它之前保存的偏移量)。

这是否足够精确和可靠?

非常感谢,安德烈亚斯·莱特纳

EN

回答 3

Stack Overflow用户

发布于 2011-11-21 18:50:48

可以在onLocationChanged()回调中获取currentTimeMillis()Location.getTime()的时间差,单位为毫秒。使用requestSingleUpdate()

我只想补充一点,如果用户有数据连接,他们可以使用NTP时间,这甚至更准确,因为GPS内部时钟可能会漂移,校正它需要一段时间。

编辑:我想编辑这个答案。作为一名Android操作系统的GNSS开发人员,我意识到许多“主要的”Android OEM厂商都把这件事搞砸了。通常,NMEA语句是在芯片组或GNSS堆栈中生成的。有时时间是正确的,这取决于实现。

此外,还有一个闰秒的问题。GPS时间不是UTC时间。从这个writing it is 18 seconds ahead开始。

此外,根据文档,Location对象的GPS时间现在是系统时间。

TLDR :使用NTP time

票数 13
EN

Stack Overflow用户

发布于 2012-10-23 14:13:05

您不能完全依赖GPS时间,因为某些设备存在一个已知问题,即为某些设备检索的时间提前了一天。在这种情况下,您可能会得到很大的偏移量。

http://code.google.com/p/android/issues/detail?id=23937

这里讨论了解决此问题的解决方法:Android : Samsung Galaxy Tabs and Android 2.2 Devices Showing GPS date 1 Day Advance from 1st jan 2012

票数 2
EN

Stack Overflow用户

发布于 2015-07-13 06:41:13

UTC不是从GPS派生的,APK优先于GPS。安卓设置忽略GPS时钟。You are getTime() is NIST。不是GPS

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8210264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档