Android Altbeacon-仅检测当前范围内的信标,并丢弃此范围外的任何信标
我希望应用程序只看到“立即”范围内的信标。在其中一篇文章(我没有链接)中,我读到诸如Immediate/Near/Far之类的字符串对于altbeacon或其他东西已经过时,建议使用Android Altbeacon-仅检测当前范围内的信标,并丢弃此范围外的任何信标,android,ibeacon,altbeacon,Android,Ibeacon,Altbeacon,我希望应用程序只看到“立即”范围内的信标。在其中一篇文章(我没有链接)中,我读到诸如Immediate/Near/Far之类的字符串对于altbeacon或其他东西已经过时,建议使用beacon.getDistance()
beacon.getDistance()<0.5
作为即时范围的信标。但不幸的是,我不知道如何实现这一点
我尝试了一篇文章提出的以下代码,以在最短距离内找到信标,但似乎无法正常工作(最可能的原因是rssi波动和通过使信标彼此保持较短距离进行测试…不知道他们为什么想要min=Integer.MAX_VALUE
…但我至少期望得到一些结果)
public void didrangebeaconregion(收集信标,Region){
对象[]beaconArray=beacons.toArray();
//找到距离最短的信标
int count=-1;//当没有信标时
int min=整数最大值;
for(int i=0;i
一些提示对我来说是一件好事。术语“立即”、“近距离”和“远距离”是在iOS中实现的任意距离范围存储桶。我们将它们放在了2.0 Android Beacon库中,因为这些术语很模糊,以米为单位实现特定距离存储桶非常容易。下面是如何实现等效功能:
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon: beacons) {
if (beacon.getDistance() < 0.5) {
// This beacon is immediate (< 0.5 meters)
}
else if(beacon.getDistance() < 3.0) {
// This beacon is near (0.5 to 3 meters)
}
else {
// This beacon is far (> 3 meters)
}
}
}
public void didrangebeaconregion(收集信标,Region){
用于(信标:信标){
if(beacon.getDistance()<0.5){
//该信标是直接的(<0.5米)
}
else如果(beacon.getDistance()<3.0){
//该信标靠近(0.5至3米)
}
否则{
//该信标距离较远(>3米)
}
}
}
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon: beacons) {
if (beacon.getDistance() < 0.5) {
// This beacon is immediate (< 0.5 meters)
}
else if(beacon.getDistance() < 3.0) {
// This beacon is near (0.5 to 3 meters)
}
else {
// This beacon is far (> 3 meters)
}
}
}