Sync Android devices via GPS time?

前端 未结 3 956
我寻月下人不归
我寻月下人不归 2020-12-03 03:23

Short version:

Problem: I need several Android devices to do something at the exact same time (within ca 100 milliseconds). For example, I want all

相关标签:
3条回答
  • 2020-12-03 03:35

    You cannot rely totally on the GPS time as there is a known issue for some devices that the time retrieved for some devices is one day ahead. In that case you might get a big offset.

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

    A workaround for solving this issue has been discussed here: Android : Samsung Galaxy Tabs and Android 2.2 Devices Showing GPS date 1 Day Advance from 1st jan 2012

    0 讨论(0)
  • 2020-12-03 03:41

    UTC is not derived from GPS, APK overrides GPS. Android set to ignore GPS clock. You are getTime() is NIST. not GPS

    0 讨论(0)
  • 2020-12-03 03:46

    You can get the time difference in milliseconds from currentTimeMillis() and Location.getTime() in the onLocationChanged() callback. Use requestSingleUpdate()


    I just want to add that, if the user has a data connection they can use NTP time, which is even more accurate, as the GPS internal clock might drift and correcting it takes a while.


    EDIT: I want to edit this answer. After working as a GNSS developer in Android OS I realized that many 'major' Android OEMs have messed this up. Usually NMEA sentences are generated at the chipset or GNSS stack. Sometimes the time is right, it depends on the implementation.

    Also there is a problem of leap second. GPS time is not UTC time. And as of this writing it is 18 seconds ahead.

    Also GPS time fromLocation objects are now system time as per the documentation

    TLDR : use NTP time

    0 讨论(0)
提交回复
热议问题