【问题标题】:Synchronize the time between an android app and a server同步安卓应用和服务器之间的时间
【发布时间】:2016-05-06 13:35:33
【问题描述】:

我使用带有蓝牙加密狗的树莓派来模拟信标。当我在树莓中更改信标时,我想测量移动应用程序检测信标的 UUID 所需的时间。通过这段代码,我找到了智能手机用来同步磁贴的服务器

final Resources res = this.getResources();
        final int id = Resources.getSystem().getIdentifier(
                "config_ntpServer", "string","android");
        final String defaultServer = res.getString(id); 

比我用

同步树莓派中的时间
sudo ntpdate -u 2.android.pool.ntp.org

在更改信标的 ID 之前,我会打印时间

timestamp() {
  date +"%T,%3N"
}


timestamp # print timestamp

sudo hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1.....

然后我比较了我更改UUID的时间和第一次看到UUID时logcat中的时间,结果总是否定的 UUID 在 15:33:03,276 更改并在 15:33:02.301 检测到。

这是同步问题吗?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: linux raspberry-pi ibeacon ibeacon-android ntpd


    【解决方案1】:

    一些想法:

    • 默认情况下,如果 Android 设备和 Pi 有网络连接,它们会自动将时间同步到 NTP 服务器。你不应该做任何事情。

    • NTP 守护进程并不总是立即更改时钟——它会随着时间的推移缓慢调整时钟,以免因立即跳转而扰乱 linux 进程。由于 Raspberry Pi 没有实时时钟,因此它在启动时总是有错误的时间。您可能需要在启动后等待几分钟才能与 Android 设备同步。

    • NTP 并不完美。使用 Internet 时间服务器时,不要期望时钟同步超过几十毫秒。由于蓝牙检测时间可能非常快(也在 10 毫秒的范围内),如果您的检测时间为 -100 毫秒,这可能在此设置的限制范围内。

    您显示的是大约 -1.0 秒的检测时间。这表明时间没有很好地同步。我怀疑 Pi 是问题所在并在那里进行故障排除。并排显示两台设备上以毫秒为单位的时间以进行故障排除可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2014-01-17
      相关资源
      最近更新 更多