java - 使用蓝牙获取两个安卓设备之间的距离
问题描述
我在 SO 上发现了很多类似的问题。但他们中的大多数都没有工作或过时。
我正在尝试构建一个使用蓝牙扫描附近设备的 android 应用程序,我希望该应用程序在手机接近 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;
}
}
该方法返回一个奇怪的小数字,我认为它甚至不是距离,因为即使手机在同一位置,它也会不断变化。
关于如何获得准确距离的任何想法?
解决方案
对于那些正在寻找设备之间距离的人。经过大量的研究和搜索,我发现获得准确或准确的距离并不是一件容易实现的事情。Android 和 Apple 仍在开发类似的东西。
因为我急于寻求解决方案,所以我用作解决方法的是一种叫做Nearby Messages API的东西。
它是一个发布-订阅 API,可用于 Android 和 iOS。它捕获附近Message
使用特定MessageListener
. 您可以向 Listener 添加一些Strategy
,以了解距离是否真的很近EARSHOT
。
这正是我所需要的,所以这对我有用。
推荐阅读
- dropbox - IFTTT,将图像从 Dropbox 发送到 Telegram
- android - 协程 CancellationException 预期行为
- java - Mockito findByIdOrNull 问题
- python - Catboost没有获得参数数量
- r - 使用 ggplot2 自定义维恩重叠区域的颜色
- ruby-on-rails - 如何在 Rails 中从不同模型呈现表单
- c - 添加初始化的静态变量时,为什么 .bss 大小会减小?
- java - Java WebApp 不断返回相同的结果
- html - 如何在网站中显示许多 svg(加载许多 svg 的更好方法)
- java - Spring boot 项目生成问题