java - 如何找到蓝牙设备之间的距离

标签 java android bluetooth

描述:

我正在尝试找到一种方法来计算应用程序与附近蓝牙设备之间的距离。

即,或者仅检测距离使用应用程序的设备 x 米的设备。

到目前为止尝试过:

我尝试使用蓝牙的信号强度,但它并不可靠,因为除了距离之外,它还有很多变量(设备的旋转、两个设备之间的物体等)。例如,我密切关注仍在 table 上的设备,并且数字上升了 10 mBw,而两个设备都没有移动。

我也想过使用 GPS 来计算距离,但 GPS 的精度与我正在寻找的精度相比相差很大 (+-1m)。

我希望在搜索之前降低蓝牙信号的强度(在较新的蓝牙版本上),以在较低范围内找到更少的设备。但尝试过的人表示它不可靠,因为即使在蓝牙的最低能量下,蓝牙也能够找到大约 10m 之外的设备。

我们周围的例子:

如果有人拥有 Apple Watch 和 Mac,他们就会知道只需在佩戴 Watch 时靠近 Mac 即可解锁 Mac。

还有,车 key 。当您带着 key 离汽车足够近时,汽车就会解锁。

注释:

假设所有设备都是硬件较高的 Android 设备。这是一个特殊的实现,并不适合所有人

最佳答案

这里对使用蓝牙设备计算距离的技术进行了很好的讨论:https://vimeo.com/171186055#t=40m15s .

对于 Apple Watch 和 Mac,Apple 正在通过点对点 WiFi 使用飞行时间来确定该精度水平的接近度。

典型的自动遥控无 key 进入系统利用 radio 脉冲,而不是蓝牙。更先进的系统,例如特斯拉的电话 key ,在电话设备上使用蓝牙,但依靠驾驶员物理触摸门 Handlebars 来完成该过程。

关于java - 如何找到蓝牙设备之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61935448/

相关文章:

java - 使用二进制搜索从 TreeSet 返回一个元素

java - 根据 RFC 3986 的无效 URI 示例

java - 在 Spring 中使用 Mono<T> 填充 Cloud Firestore 实体

android - 如何在不启用谷歌播放设置的情况下打开即时应用程序?

java - 尝试在 emacs 上运行 clojure 项目,但 Java 错误 : Cannot run program powershell. exe

android - Android Studio 0.44 中的 Gradle 无法在执行类型任务中运行的路径上找到进程

java - 添加自定义控件作为标记 OSMDROID BONUS PACK

bluetooth - BLE 参数协商如何工作?

ios - 在【设置】的蓝牙设备列表中显示和配对BLE设备

ios - 设备如何在CoreBluetooth中配对?