当我们进入信标范围 android 时,我无法获取所有 UWB 估计信标的列表

问题描述 投票:0回答:1

这是我的代码

我的云估计帐户上有 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
android beacon estimote uwb
1个回答
0
投票

估算团队在这里,

您似乎有 Estimote UWB Beacons,但您发布的代码与 BLE 信标相关。

Estimote 有两代信标:

  1. BLE(蓝牙)在2013-2019年流行。它们通常配置为 iBeacon 或 Eddystone,并允许手机以 1-3m 的精度检测它们。 它们通常是绿色、蓝色或白色。

  2. 2019年推出的UWB(超宽带),配置FiRa协议,兼容Apple的U1/U2 UWB芯片和Google Android的Core UWB JetPack库。它们提供 10 厘米的精度。 它们通常是黄色、焦糖色、白色,如下所示:

Estimote UWB Beacons

这些 UWB 信标的移动 SDK 在这里:

请注意,UWB 信标还具有 BLE 无线电,但它主要用于在通过 UWB 连接到这些信标之前发现这些信标。

典型周期是:

  1. 手机开始通过 BLE 进行扫描
  2. 手机通过 BLE 发现 UWB 信标
  3. 手机通过 BLE 连接到 UWB 信标
  4. 手机开始通过 UWB 与 UWB 信标进行测距
  5. 手机获取到UWB信标的距离
  6. 手机与 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

© www.soinside.com 2019 - 2024. All rights reserved.