使用蓝牙获取两个 android 设备之间的距离
Getting distance between two android devices using bluetooth
我在 SO 上发现了很多类似的问题。但是他们中的大多数都没有工作或过时了。
我正在尝试构建一个使用蓝牙扫描附近设备的 android 应用程序,我希望该应用程序在 phone 距离将近 2 米时提醒用户。
所以我尝试使用在 SO 上找到的以下方法来获取距离。
protected double calculateDistance(float txPower, double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine distance, return -1.
}
double ratio = rssi * 1.0 / txPower;
if (ratio < 1.0) {
return Math.pow(ratio, 10);
} else {
double accuracy = (0.89976) * Math.pow(ratio, 7.7095) + 0.111;
return accuracy;
}
}
该方法返回一个奇怪的小数字,我认为它甚至不是距离,因为即使 phone 位于同一位置,它也会不断变化。
知道如何获得准确的距离吗?
对于那些正在寻找设备之间距离的人。经过大量研究和搜索,我发现获得准确或精确的距离并不容易实现。 Android Apple 仍在研究类似的东西。
因为我急于寻求解决方案,所以我使用了一种叫做 Nearby Messages API 的解决方法。
它是一个发布-订阅 API,可用于 Android 和 iOS。它捕获使用特定 MessageListener
订阅特定 Message
的附近设备。您可以向监听器添加一些 Strategy
以了解距离是否真的接近 EARSHOT
。
这正是我所需要的,所以对我有用。
我在 SO 上发现了很多类似的问题。但是他们中的大多数都没有工作或过时了。
我正在尝试构建一个使用蓝牙扫描附近设备的 android 应用程序,我希望该应用程序在 phone 距离将近 2 米时提醒用户。
所以我尝试使用在 SO 上找到的以下方法来获取距离。
protected double calculateDistance(float txPower, double rssi) {
if (rssi == 0) {
return -1.0; // if we cannot determine distance, return -1.
}
double ratio = rssi * 1.0 / txPower;
if (ratio < 1.0) {
return Math.pow(ratio, 10);
} else {
double accuracy = (0.89976) * Math.pow(ratio, 7.7095) + 0.111;
return accuracy;
}
}
该方法返回一个奇怪的小数字,我认为它甚至不是距离,因为即使 phone 位于同一位置,它也会不断变化。
知道如何获得准确的距离吗?
对于那些正在寻找设备之间距离的人。经过大量研究和搜索,我发现获得准确或精确的距离并不容易实现。 Android Apple 仍在研究类似的东西。
因为我急于寻求解决方案,所以我使用了一种叫做 Nearby Messages API 的解决方法。
它是一个发布-订阅 API,可用于 Android 和 iOS。它捕获使用特定 MessageListener
订阅特定 Message
的附近设备。您可以向监听器添加一些 Strategy
以了解距离是否真的接近 EARSHOT
。
这正是我所需要的,所以对我有用。