AltBeacon 中的 Beacon 蓝牙地址与 BluetoothAdapter 地址

Beacon Bluetooth address in AltBeacon vs. BluetoothAdapter address

我目前正在使用 AltBeacon library 在 Android 上开发我的应用程序。

我需要从扫描设备的角度识别哪个广告设备发送了信标。所以,我正在考虑使用蓝牙 MAC 地址来检查广告设备。

使用该库,当找到如下信标集合时,将调用我对 RangeNotifier 的回调:

@Override
public void didRangeBeaconsInRegion(Collection beacons, Region region) {
  for (Beacon b : beacons) {
    System.out.println(b.getBluetoothAddress());
  }
}

经过测试,我发现getBluetoothAddress()与广告设备的蓝牙MAC地址不匹配。

在广告设备上,我正在获取蓝牙MAC地址如下:

public String getMacAddress() {
    BluetoothAdapter.getDefaultAdapter().getAddress();
}

因此我的问题是:

  1. 我假设 BeacongetBluetoothAddress() 与广告商的蓝牙 MAC 地址不同是不是错了?如果不同,Beacon 返回的地址是什么?
  2. 如何在广告前获取广告设备的Beacon.getBluetoothAddress()是什么?
  3. 任何其他关于识别广告设备的建议(除了使用蓝牙 MAC 地址)将不胜感激。

您使用的是哪种信标(制造商)? 广告 MAC 地址是一个欺骗性地址,因此您绝对有可能获得不同的值。甚至有制造商(例如 Gimbal)内置 MAC 地址轮换,因此接收设备将无法从最初来自同一设备但具有不同 MAC 的两个信号中识别设备.

在通常情况下,如果您知道要在您的应用中做出反应的所有信标,那么通过它的 UUID、主要和次要组合来识别信标就足够了。