BLE 支持 ping 吗?
Does BLE support pinging?
BLE 是否支持 ping,即向其他设备发送消息并接收它们的状态?
我想在Android上写一个应用程序,它会ping附近的每台设备并计算发送时间和收到答复之间的时间,可以吗?
正如您在评论中指出的,您喜欢使用到达时间或到达时间差算法来计算基于蓝牙的距离。
据我所知,目前这更多是蓝牙环境中的理论方法。由于无线电信号以光速传播(一纳秒内约 29.979 厘米),您将需要高采样分辨率才能获得准确的结果。每纳秒级的偏差将导致大约 30 厘米的误差。
对于 WiFi,这是通过专用芯片组实现的。据我所知,目前 android 无法做到这一点,因为它需要大量低级支持(芯片组和 OS)
希望对您有所帮助!
这里有一些来源
Android relative positioning, Wifi:Time of Arrival
您可以在 onScanResult 方法中轻松查看每个设备的发现时间戳:
@Override
public void onScanResult(int callbackType, ScanResult result){
Long lastSeen = result.getTimestampNanos();
//rest of your code
}
见Android Documentation。您可以使用此时间戳和开始扫描的时间来获取每台设备的大致响应时间。
BLE 是否支持 ping,即向其他设备发送消息并接收它们的状态?
我想在Android上写一个应用程序,它会ping附近的每台设备并计算发送时间和收到答复之间的时间,可以吗?
正如您在评论中指出的,您喜欢使用到达时间或到达时间差算法来计算基于蓝牙的距离。
据我所知,目前这更多是蓝牙环境中的理论方法。由于无线电信号以光速传播(一纳秒内约 29.979 厘米),您将需要高采样分辨率才能获得准确的结果。每纳秒级的偏差将导致大约 30 厘米的误差。
对于 WiFi,这是通过专用芯片组实现的。据我所知,目前 android 无法做到这一点,因为它需要大量低级支持(芯片组和 OS)
希望对您有所帮助!
这里有一些来源
Android relative positioning, Wifi:Time of Arrival
您可以在 onScanResult 方法中轻松查看每个设备的发现时间戳:
@Override
public void onScanResult(int callbackType, ScanResult result){
Long lastSeen = result.getTimestampNanos();
//rest of your code
}
见Android Documentation。您可以使用此时间戳和开始扫描的时间来获取每台设备的大致响应时间。