首页 文章

AltBeacon中的Beacon蓝牙地址与BluetoothAdapater地址相对应

提问于
浏览
0

我目前正在使用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();
}

因此,我的问题是:

  • 我错误地认为 BeacongetBluetoothAddress() 与广告商的蓝牙MAC地址不同?如果不同, Beacon 返回的是什么地址?

  • 如何在广告前获得广告设备的Beacon.getBluetoothAddress()?

  • 任何其他关于识别广告设备的建议(除了使用蓝牙MAC地址)将不胜感激 .

谢谢,

1 回答

  • 0

    你使用什么样的信标(制造商)?广告MAC地址是一个欺骗性地址,因此您可能会得到不同的值 . 甚至有制造商(例如Gimbal)内置MAC地址旋转,因此接收设备将无法从最初来自同一设备但具有不同MAC的两个信号中识别设备 .

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

相关问题