java - 跟踪信标
问题描述
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon : beacons) {
Beacon.setHardwareEqualityEnforced(true);
Log.i("MainActivity", "I see a beacon that is about " + beacon.getDistance() + " meters away. ");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
我目前有 3 个我想跟踪的蓝牙信标,我想写一些类似的东西
If (beacon.getBluetoothAddress().equals("x") && beacon.getDistance() < beacon2.getDistance() && beacon.getDistance() < beacon3.getDistance()){
Log.i(msg: "beacon1 is the the closest to you");
如何跟踪 3 个信标?
解决方案
要找到最近的信标,您可以尝试以下操作:
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region){
String closestBeacon = null;
for (Beacon beacon : beacons) {
if (closestBeacon == null)
closestBeacon = beacon;
else {
if (closestBeacon.getDistance() > beacon.getDistance()) {
closestBeacon = beacon;
}
}
}
Log.i(TAG, closestBeacon.getBluetoothAddress() + " beacon is the closest to you");
}
推荐阅读
- mysql - 如何在 codeigniter 中使用数组值创建超过 1 个子句
- azure-active-directory - 图形 API 的 Azure API 权限
- nginx - webpack-dev-server 和 nginx 本地,如何使用 localhost 运行它,而不是 localhost:8081?
- angular - .net core 3.0 和 Angular 8 - 基于角色的身份验证(简单方式)
- javascript - 如何在香草javascript中制作移动线?
- json - 使用未知对象解组 JSON
- swift - 如果 init() 中的宽度/高度为 0,如何在 Autolayout 中应用具有宽度/高度的约束?
- r - 对彼此相距一定阈值距离内的多边形进行分组
- cassandra - cassandra - udt 列,数据插入问题
- javascript - 重新填充以选择选项