伙计们,我正在用Alt信标Android库做一些蓝牙应用程序的演示。它提供了一个getDistance()方法,我可以用它来获取我的手机和外部蓝牙设备之间的距离,并上传Alt信标协议。然而,由于设备是不同的,我认为距离可能会有很大的错误(当我在1米之外的时候得到0.05m,以此类推)。这使我认为,如果我们为getDistance()方法做一些校准工作,将是有用的。有办法这样做吗?(目前我不知道如何修改getDistance方法,也许@重写它?不太确定)非常感谢。
发布于 2015-12-03 09:28:07
我不知道库中有任何校准功能。但是,您可以通过实现自己的DistanceCalculator来更改距离计算。
默认的距离计算器是ModelSpecificDistanceCalculator,它在BeaconService的onCreate方法(检查这)中设置。因此,简单地创建您自己的DistanceCalculator版本,并在创建BeaconService之后设置它,就可以做您想做的事情;
// after beacon service is created
DistanceCalculator customCalculator = ...;
Beacon.setDistanceCalculator(customCalculator);然而,你现在应该知道,设备也是导致变化的原因;
每个模型可能具有不同的蓝牙芯片组和天线,因此,当相对于信标处于相同位置时,可以接收不同的信号电平。为了解决这个问题,这个库使用了一个不同的公式来计算不同Android设备模型的距离。因为并非所有设备都有自定义公式内置到库中,如果找不到匹配的公式,库将返回到Nexus 5的默认设备计算。
有关距离计算的更多信息,请访问AltBeacon距离计算页面。此页面还解释了距离计算是如何工作的,以及如何为增强设备变化库做出贡献。
顺便说一句,您也可以检查CurveFittedDistanceCalculator,但这一项要求您给出特定于设备的系数(在此页中解释)。有关此问题的更多信息,请查看其源代码。
https://stackoverflow.com/questions/34049812
复制相似问题