如何获取每个设备与蓝牙的距离?

时间:2019-04-15 09:02:49

标签: java android bluetooth

我有一个模块设备(Galaxy S2,API 16),该设备用作服务器模块。

我需要在服务器设备和客户端设备之间保持一定距离。

尝试1。 我尝试使用RSSI值来获取距离。 (使用BroadCastReceiver,android.bluetooth.device.action.found和EXTRA_RSSI)

,但仅适用于未配对的设备,并且需要始终允许蓝牙搜索模式。

我认为我的客户不喜欢我不能使用它。

尝试2。 我尝试使用BluetoothGattServer-readRemoteRSSI()。

但是gatt服务器需要API 18,我的服务器模块是16。我无法使用它。

尝试3。 我连接了服务器和客户端(经典蓝牙)以进行数据通信。

我认为某些数据包会因距离而丢失。 (我猜数据丢失=距离)

但是,RFCOMM非常完美。数据完全在蓝牙范围内接收和发送。

我认为原因是RFCOMM与TCP PROTOCOL类似。 (以我的猜测)

然后我尝试使用L2CAP协议。 (原因类似于UDP。我猜它会造成数据包丢失。)

但是,android不提供L2CAP协议。

我该怎么做才能获得距离?

p.s)对不起,我的英语。感谢阅读。

1 个答案:

答案 0 :(得分:1)

蓝牙不是拉近距离的理想无线技术。版本5.1引入了到达角度(AoA)和离开角度(AoD)功能,以便获得更好的定位功能,但是在此之前的任何版本(包括4.0(Galaxy S2的蓝牙版本)都只能为您提供近似的(近或远),并且相对不准确。请在此处查看类似的问题/答案:-

我希望这会有所帮助。