我有一个模块设备(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)对不起,我的英语。感谢阅读。
答案 0 :(得分:1)
蓝牙不是拉近距离的理想无线技术。版本5.1引入了到达角度(AoA)和离开角度(AoD)功能,以便获得更好的定位功能,但是在此之前的任何版本(包括4.0(Galaxy S2的蓝牙版本)都只能为您提供近似的(近或远),并且相对不准确。请在此处查看类似的问题/答案:-
我希望这会有所帮助。