AltBeacon getDistance() 函数与信标定位距离估计

     2023-02-16     151

关键词:

【中文标题】AltBeacon getDistance() 函数与信标定位距离估计【英文标题】:AltBeacon getDistance() function vs beacon locate distance estimation 【发布时间】:2020-10-02 15:16:52 【问题描述】:

大家好,我正在使用替代信标库来获取我的手机和各种信标之间的距离。 我注意到应用程序Locate Beacon 获得的结果比我从图书馆获得的结果要精确得多。因为我看到应用程序和库是由同一个人开发的,所以我认为结果可以比较,但事实并非如此。

有什么方法可以查看应用程序的源代码或更一般地了解如何使我的结果与应用程序获得的结果一样好?

EDIT 在对参考应用程序进行一些测试后,给出了正确的值,我注意到在我的应用程序中 runningAverage 值不正确(我监控了始终介于两者之间的信标的 RSSI 45 和 55,而平均值为 64/65)。我觉得我搞砸了通过扩展类来计算运行平均值的方式

这是我的课

public class MyBeacon extends Beacon implements Serializable, Comparable 
public String btAddress;
public String area;
public double[] position;

private static Map<String, String> btToArea = new HashMap<>();
private static Map<String, double[]> positionsMap = new HashMap<>();

static 
    btToArea.put("DE:FD:0A:11:D8:80", "DEV OFFICE");
    btToArea.put("D1:75:7B:58:54:D6", "DEV OFFICE");
    btToArea.put("D6:81:6A:D5:09:40", "CENTRAL OFFICE");
    btToArea.put("F1:14:DC:C2:0C:08", "CENTRAL OFFICE");
    btToArea.put("FC:0D:4A:C1:CD:57", "DEV OFFICE");

    positionsMap.put("D6:81:6A:D5:09:40", new double[]9.9, 3.9); //
    positionsMap.put("FC:0D:4A:C1:CD:57", new double[]0.0, 0.0); //
    positionsMap.put("D1:75:7B:58:54:D6", new double[]0.0, 2.5); //
    positionsMap.put("F1:14:DC:C2:0C:08", new double[]6.9, -1.0); //
    positionsMap.put("DE:FD:0A:11:D8:80", new double[]-0.4, 2.5);


public MyBeacon(Beacon beacon)
    super(beacon);
    this.btAddress = beacon.getBluetoothAddress();
    this.area = btToArea.getOrDefault(beacon.getBluetoothAddress(), "ERROR");
    this.position = positionsMap.get(beacon.getBluetoothAddress());


public static MyBeacon FromBeacon(Beacon beacon)
    if (positionsMap.containsKey(beacon.getBluetoothAddress()))
        return new MyBeacon(beacon);

    return null;


@Override
public boolean equals(Object o) 
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    MyBeacon myBeacon = (MyBeacon) o;
    return Objects.equals(btAddress, myBeacon.btAddress) &&
            Objects.equals(area, myBeacon.area) &&
            Arrays.equals(position, myBeacon.position);


@Override
public int hashCode() 
    int result = Objects.hash(super.hashCode(), btAddress, area);
    result = 31 * result + Arrays.hashCode(position);
    return result;


@Override
public int compareTo(Object o) 
    return (int) (((MyBeacon) o).getDistance() - this.getDistance());

我是否正确扩展了课程?我的怀疑是对的还是完全不对?

如果这可能会影响解析器,解析器也是自定义的

【问题讨论】:

我会重新测试您认为运行平均 RSSI 与 RSSI 读数不一致的情况。这是极不可能的,我怀疑真正的问题是别的。尝试设置 beaconManager.setDebug(true);并查看 zlogCat 的每个 RSSI 读数和运行平均值。 嗨,很抱歉在很长一段时间后重新打开它,但我又开始在设备上工作,并注意到其中一些设备设置为具有相同的 id,以及它们的运行平均值(以及相应的距离)“收敛”,所以我想知道运行平均值是否与 ID1 相关,而不是我最初认为的 BT 地址。这仍然让我感到困惑,因为定位应用程序看起来不受它的影响,并且两个信标显示的距离不同。一旦我的同事更改了 ID,我就会进行进一步的测试,但我想我会提前问一下,以防万一它没有意义 您可以使用this setting跟踪具有相同标识符的信标,因为MAC地址不同 【参考方案1】:

Locate Beacon 应用程序的源代码确实只使用了Beacon#getDistance() 方法,因此不清楚为什么您会看到差异。 Play 商店中的最新版本使用了稍旧版本的库 org.altbeacon:android-beacon-library:2.16.2,但那里并没​​有太大变化。

我编写了 Locate Beacon,因此我可以向您保证,相对于您在开源库中获得的距离估计,没有什么秘密——它只是有一个更漂亮的 UI。您可以尝试使用图书馆的参考应用程序进行测试,看看它为您提供了什么样的距离估计。这可能会消除您自己的应用程序中的任何细微编码问题。

【讨论】:

嗨,这就是我担心的,我会按照你的建议做谢谢! 我用我的发现编辑了我的问题,我仍然对发生的事情感到困惑

AltBeacon:didExitRegion 和 didEnterRegion 交替

】AltBeacon:didExitRegion和didEnterRegion交替【英文标题】:AltBeacon:didExitRegionanddidEnterRegionalternation【发布时间】:2014-10-3110:03:53【问题描述】:我一直在使用android信标库(AltBeacon),但遇到以下问题:当检测到didEnterRegion事件时,后面... 查看详情

altbeacon - 计算距离的常数

】altbeacon-计算距离的常数【英文标题】:altbeacon-constantsforcalculatingdistance【发布时间】:2015-01-1411:15:08【问题描述】:我正在使用iBeacons撰写关于室内导航的学士论文。为此,我使用三边测量来找到我的位置。我一直在使用android... 查看详情

Altbeacon 库:每秒多次刷新 RSSI

】Altbeacon库:每秒多次刷新RSSI【英文标题】:Altbeaconlibrary:refreshRSSImorethanonceasecond【发布时间】:2017-01-2017:06:21【问题描述】:免责声明:android编程新手。大家好,我正在尝试设计一个应用程序来使用altbeacon库跟踪智能手机的... 查看详情

如何使用 android-beacon-library (altbeacon) 正确停止扫描信标

】如何使用android-beacon-library(altbeacon)正确停止扫描信标【英文标题】:Howtoproperlystopscanningbeaconusingandroid-beacon-library(altbeacon)【发布时间】:2017-10-0518:01:43【问题描述】:我正在使用来自altbeacon的android-beacon-library在前台进行扫描... 查看详情

altbeacon 参考应用程序和多个退出/进入调用

】altbeacon参考应用程序和多个退出/进入调用【英文标题】:altbeaconreferenceappandmultipleexit/entrycalls【发布时间】:2016-11-2800:49:35【问题描述】:我正在使用Android6.0.1(Nexus5)并通过Altbeacon库2.9.1测试信标监控,并且在在家中靠近信标... 查看详情

altbeacon 以 10Hz 连续检测信标 RSSI 值

】altbeacon以10Hz连续检测信标RSSI值【英文标题】:altbeacondetectionofbeaconRSSIvaluescontinuouslyat10Hz【发布时间】:2020-02-2010:32:24【问题描述】:我创建了一个android(java)应用程序,它使用altbeacon库(githubpage)通过蓝牙模块检测信标。信标配... 查看详情

OnyxBeacon 的 AltBeacon 不稳定,反复循环通过 didEnterRegion 和 didExitRegion

】OnyxBeacon的AltBeacon不稳定,反复循环通过didEnterRegion和didExitRegion【英文标题】:AltBeaconunstableforOnyxBeacons,cyclingthroughdidEnterRegionanddidExitRegionrepeatedly【发布时间】:2015-12-1108:06:57【问题描述】:我正在使用AltBeacon库构建应用程序以... 查看详情

AltBeacon:当 BeaconConsumer 从 DidEnterRegion BootstrapNotifier 回调绑定时,未调用 onBeaconServiceConnect

】AltBeacon:当BeaconConsumer从DidEnterRegionBootstrapNotifier回调绑定时,未调用onBeaconServiceConnect【英文标题】:AltBeacon:onBeaconServiceConnectnotcalledwhenBeaconConsumerBindedFromDidEnterRegionBootstrapNotifiercallback【发布时间】:2015-03-0 查看详情

使用 AltBeacon 库以 CoreBluetooth 格式做广告

】使用AltBeacon库以CoreBluetooth格式做广告【英文标题】:AdvertiseinCoreBluetoothformatusingtheAltBeaconlibrary【发布时间】:2020-06-1710:12:26【问题描述】:我正在尝试使用BLE在Android和ios之间实现操作系统间广告和扫描功能。我需要了解从Andr... 查看详情

AltBeacon api 在测距信标时返回空集合

】AltBeaconapi在测距信标时返回空集合【英文标题】:AltBeaconapireturnemptycollectionwhilerangingbeacons【发布时间】:2018-01-3013:44:11【问题描述】:我正在尝试对信标进行测距,并且正在按照此处所写的内容进行操作:http://altbeacon.github.io... 查看详情

使用 altBeacon 库在 Android 中未显示所有信标

】使用altBeacon库在Android中未显示所有信标【英文标题】:AllbeaconsarenotshowninAndroidusingaltBeaconlibrary【发布时间】:2015-03-1322:11:29【问题描述】:我正在使用AltBEaconAndroidlibrary开发适用于Android设备的iBeacon应用。我正在扫描信标,但... 查看详情

Android中的Altbeacon扫描仪特定UUID

】Android中的Altbeacon扫描仪特定UUID【英文标题】:AltbeaconscannerspecificUUIDinAndroid【发布时间】:2019-08-1515:46:32【问题描述】:如果我需要监控UUID的特定区域。在一个区域中声明,但是当进入didEnterRegion时,我只得到UUID和Major和Minor... 查看详情

应用程序关闭时 AltBeacon 未检测到信标

】应用程序关闭时AltBeacon未检测到信标【英文标题】:AltBeaconnotdetectbeaconwhenappisclosed【发布时间】:2016-06-2722:36:08【问题描述】:库继续正确扫描,但在此模式下未检测到信标。我在很多地方都读过,但是对于这是否可能,他们... 查看详情

使用 AltBeacon 库从 Android 上的 iBeacon 读取传感器值

】使用AltBeacon库从Android上的iBeacon读取传感器值【英文标题】:ReadsensorvaluesfromiBeacononAndroidwithAltBeaconlibrary【发布时间】:2018-05-1811:29:13【问题描述】:我有一个BeaconskybeaconForecum201,它可以宣传为iBeacon或Eddystone(URL/UID)。它有温度... 查看详情

在 Android 8 之前的应用程序重新启动后,AltBeacon 未检测到 iBeacon

】在Android8之前的应用程序重新启动后,AltBeacon未检测到iBeacon【英文标题】:AltBeaconnotdetectingiBeaconafterapprestartonAndroidpre-8【发布时间】:2018-06-1813:17:50【问题描述】:我将AltBeacon与iBeacon的自定义解析器一起使用。我有一个实现Bo... 查看详情

Android 如何使用 Android Studio 和 gradle 创建包含 Altbeacon 库的库(jar)

】Android如何使用AndroidStudio和gradle创建包含Altbeacon库的库(jar)【英文标题】:Androidhowtocreatelibrary(jar)containingAltbeaconlibrarywithAndroidstudioandgradle【发布时间】:2015-09-1707:14:33【问题描述】:我是Android的新手,尤其是libs。我使用的... 查看详情

javascript使用免费增值api在地图上获取两点的getdistance(代码片段)

查看详情

当我使用我的 Android 设备作为使用 AltBeacon 的 ibeacon 时找不到 CoreBluetooth

】当我使用我的Android设备作为使用AltBeacon的ibeacon时找不到CoreBluetooth【英文标题】:CoreBluetoothcannotbefoundwhenIusemyAndroiddeviceasibeaconusingAltBeacon【发布时间】:2020-04-2009:23:19【问题描述】:我有使用CoreBluetooth的Ibeacon扫描应用程序。... 查看详情