这是我的代码
我的云估计帐户上有 3 个信标。所有 3 个信标都与同一楼层保持一定距离,但当我进入信标范围区域时,我无法获取所有信标详细信息。 请帮助我我的代码有什么问题。
private void beaconRegionConfig() {
BeaconRegion beaconRegion = new BeaconRegion("", null, null, null);
beaconManager.setBackgroundScanPeriod(5000, 30000);
beaconManager.setForegroundScanPeriod(10000, 5000);
beaconManager.connect(() -> {
beaconManager.startRanging(beaconRegion);
beaconManager.setConfigurableDevicesListener(configurableDevices -> {
Log.e(TAG, "configurableDevicesList = " + configurableDevices);
});
});
// Set up ranging for get all beacons
beaconManager.setRangingListener(new BeaconManager.BeaconRangingListener() {
@Override
public void onBeaconsDiscovered(BeaconRegion region, List<Beacon> beacons) {
// Handle discovered beacons here
//Log.e(TAG, "region: " + region);
Log.e(TAG, "region " + region + " , _beaconsSize: " + beacons.size() + " ," + beacons);
}
});
}
我像这样得到o/p
_beaconsSize: 1 ,[Beacon{macAddress=[F0:1A:A0:11:D5:A8],
proximityUUID=5861636c-716e-2301-be01-6c731222f008, major=1,
minor=0, measuredPower=-53, rssi=-102}]
在菜单文件中
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- for beacons-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"/>
在 gradle 中
implementation 'com.estimote:sdk:1.0.12'
我的 estomote 云帐户中的这 3 个信标
ice
Identifier: a7....
Tags:IceTag
Packets:None
Location:385,..., India
lemon
Identifier:79.....
Tags:LemonTag
Packets:None
Location:385,..., India
caramel
Identifier:db....
Tags:Test
Packets:None
Location: 385, ...,India
估算团队在这里,
您似乎有 Estimote UWB Beacons,但您发布的代码与 BLE 信标相关。
Estimote 有两代信标:
BLE(蓝牙)在2013-2019年流行。它们通常配置为 iBeacon 或 Eddystone,并允许手机以 1-3m 的精度检测它们。 它们通常是绿色、蓝色或白色。
2019年推出的UWB(超宽带),配置FiRa协议,兼容Apple的U1/U2 UWB芯片和Google Android的Core UWB JetPack库。它们提供 10 厘米的精度。 它们通常是黄色、焦糖色、白色,如下所示:
这些 UWB 信标的移动 SDK 在这里:
适用于 UWB 信标的 iOS SDK:https://github.com/Estimote/iOS-Estimote-UWB-SDK
适用于 UWB 信标的 Android SDK:https://github.com/Estimote/Android-Estimote-UWB-SDK
请注意,UWB 信标还具有 BLE 无线电,但它主要用于在通过 UWB 连接到这些信标之前发现这些信标。
典型周期是:
因此在 Android 上发现这些 UWB 信标的正确方法是:
uwbManager.startDeviceScanning(this)
然后您可以像这样打印发现的 UWB 信标:
uwbManager.uwbDevices.collect { scanResult: EstimoteUWBScanResult ->
when (scanResult) {
is EstimoteUWBScanResult.Devices -> {
scanResult.devices.forEach { device ->
println("Discovered device: ${device.deviceId} rssi: ${device.rssi}")
}
}
else -> println("No devices found or error occurred")
}
}
你应该看到这样的东西:
发现的设备:317804 rssi:-71 发现的设备:b288ef rssi: -40
然后在通过 UWB 连接到每个信标和范围后,您应该看到:
设备地址前缀:02:39:....距离0.99 m,方位角: -40.240578,仰角:18.97932
设备地址前缀:02:39:....距离0.86 m,方位角:-33.938553,仰角:57.48887