Android蓝牙Altbeacon校准

时间:2015-12-02 18:02:28

标签: android bluetooth altbeacon

人 我正在使用Altbeacon Android Library做一些蓝牙应用程序进行演示。它提供了一个getDistance()方法,我可以通过上传Altbeacon协议来获取手机和外部蓝牙设备之间的距离。然而,由于设备不同,我认为距离可能会有很大的误差(当我在1米远的地方时,我得到0.05米,依此类推)。这让我觉得如果我们为getDistance()方法做一些校准工作会很有用。有没有办法做到这一点? (目前我不知道如何修改getDistance方法,也许@override它?不太确定) 非常感谢。

1 个答案:

答案 0 :(得分:1)

我不知道库中有任何校准功能。但是,您可以通过实施自己的DistanceCalculator来更改距离计算。

默认距离计算器为ModelSpecificDistanceCalculator,并在BeaconService s onCreate方法中设置(检查this)。因此,只需创建自己的DistanceCalculator版本并在创建BeaconService后设置它就可以做到你想要的;

// after beacon service is created
DistanceCalculator customCalculator = ...;
Beacon.setDistanceCalculator(customCalculator);

但是,您现在应该该设备也会导致变化;

  

每个型号可能具有不同的蓝牙芯片组和天线,因此当处于相对于信标的相同位置时可以接收不同的信号电平。为了解决这个问题,该库使用不同的公式来计算不同Android设备型号的距离。由于并非所有设备都具有内置于库中的自定义公式,因此如果未找到匹配的公式,库将回退到Nexus 5的默认设备计算。

有关距离计算的详细信息,请访问AltBeacon - Distance Calculations页面。此页面还介绍了距离计算的工作原理以及如何为增强设备变体库提供帮助。

顺便说一下,您也可以检查CurveFittedDistanceCalculator,但这个要求您提供设备特定系数(在this page中说明)。有关此问题的详细信息,请查看其source code