使用蓝牙获取两个安卓设备之间的距离

Posted

技术标签:

【中文标题】使用蓝牙获取两个安卓设备之间的距离【英文标题】:Getting distance between two android devices using bluetooth 【发布时间】:2020-05-14 10:50:08 【问题描述】:

我在 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;
    

该方法返回一个奇怪的小数字,我认为它甚至不是距离,因为即使手机在同一位置,它也会不断变化。

知道如何获得准确的距离吗?

【问题讨论】:

【参考方案1】:

对于那些正在寻找设备之间距离的人。经过大量的研究和搜索,我发现获得准确或准确的距离并不是一件容易实现的事情。 Android 和 Apple 仍在开发类似的东西。

因为我急于寻求解决方案,所以我使用的解决方法是 Nearby Messages API。

它是一个发布-订阅 API,适用于 Android 和 ios。它使用特定的MessageListener 捕获附近订阅特定Message 的设备。并且你可以在监听器中添加一些Strategy,以便知道距离是否真的接近EARSHOT

这正是我所需要的,所以对我有用。

【讨论】:

以上是关于使用蓝牙获取两个安卓设备之间的距离的主要内容,如果未能解决你的问题,请参考以下文章

如何估计两个安卓设备之间的距离? (蓝牙首选)

如何计算两个Android设备之间的距离? [关闭]

android audio - 计算两个设备之间的距离

如何计算两个经纬度之间的距离[重复]

无需配对即可获取设备位置的蓝牙库

Android蓝牙开发(二)经典蓝牙消息传输实现