Android蓝牙无线电信标校准

Android蓝牙无线电信标校准,android,bluetooth,altbeacon,Android,Bluetooth,Altbeacon,伙计们 我正在使用Altbeacon Android库为演示做一些蓝牙应用程序。它提供了一个getDistance()方法,我可以使用该方法获取手机和上传Altbeacon协议的外部蓝牙设备之间的距离。然而,由于设备不同,我认为距离可能会有很大的误差(当我在1米之外时,我得到0.05米,以此类推)。这让我认为,如果我们为getDistance()方法做一些校准工作,将会很有用。有没有办法做到这一点?(目前我不知道如何修改getDistance方法,可能@override?不太确定) 非常感谢 我

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

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

默认的距离计算器是
ModelSpecificDistanceCalculator
,它是在
beacervice
s
onCreate
方法(检查)中设置的。因此,只需创建自己版本的
distance calculator
,并在创建
beacervice
后进行设置,就可以完成您想要的任务

// after beacon service is created
DistanceCalculator customCalculator = ...;
Beacon.setDistanceCalculator(customCalculator);
然而,你现在应该知道,设备也会引起变化

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

有关距离计算的更多信息,请访问第页。本页还介绍了距离计算的工作原理,以及如何帮助增强设备变化库


顺便说一下,您也可以检查
CurveFittedDistanceCalculator
,但这一项要求您提供特定于设备的系数(在中解释)。有关这方面的更多信息,请查看。

哦,非常感谢。所以我只需要在“距离计算器-自定义计算器”中输入公式,对吗?另外,你知道如何检测一些特定的信标吗?现在我可以使用Beacon.iterator().next()来获取信标,我可以分别提取每个信标并将它们存储在不同的变量中而不是一个变量中吗?非常感谢,您需要创建自己的计算器并将其设置为
Beacon
,但在编写自己的计算器之前,请阅读原始计算器的源代码。它会帮助你理解。你所说的特定信标是什么意思?你指的是两种不同类型的信标(如iBeacon、Eddystone)还是在iBeacon中具有特定ID(如UUID、Major、Minor)?在任何一种情况下,您都可以为特定情况创建一个
区域
。然后,这些特定的
信标将被单独报告。实际上,我指的是UUID的事情,但是听取您对iBeacon和Eddystone的建议非常有帮助。所以按照你的方式,如果我想修改代码,比如Altbeacon提供的参考应用程序,我需要先更新区域信息,然后服务方法“didEnterRegion”会有助于对其做出不同的响应?但另一个问题是,我不确定修改后是否会改变监控活动,就像它仍然会从所有的信标获取信息一样。虽然它可能会给我不同的响应,但似乎我仍然需要修改监视活动,以便仅从特定信标获取信息。我能用这种方法从“didEnterRegion”中提取信息吗?谢谢~