linux - 同步Android应用程序和服务器之间的时间

标签 linux raspberry-pi ibeacon ibeacon-android ntpd

我使用带有蓝牙加密狗的树莓派来模拟信标。当我在覆盆子中更改信标时,我想测量移动应用程序检测信标 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 检测到。

这是同步问题吗?有更好的方法吗?

最佳答案

一些想法:

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

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

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

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

关于linux - 同步Android应用程序和服务器之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37073815/

相关文章:

ssl - 带有 vsftpd : configuring SSL/TLS 的 FTP 服务器

raspberry-pi - HCI LE 连接——命令不允许

node.js - 无法在 node.js 中获取 GPIO 引脚值

android - altbeacon - 用于计算距离的常量

linux - R,如何在带有时区和垃圾 Unicode 字符的 Linux 上使用 strptime

linux - 如果对 `kill` 的调用导致为调用进程生成信号并且信号未被阻塞,会发生什么情况?

android - 如何为 kontakt.io sdk 实现后台服务?

ios - requestAlwaysAuthorization 不显示权限警报

linux - HTTPS (SSL) 的 PUT 请求

linux - 服务不会在 Linux Boot 上启动