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

时间:2015-05-20 12:32:01

标签: android bluetooth altbeacon

我目前正在使用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. 我错误地认为Beacon的{​​{1}}与广告客户的蓝牙MAC地址有所不同?如果不同,getBluetoothAddress()返回的地址是什么?
  2. 如何在广告前获得广告设备的Beacon.getBluetoothAddress()?
  3. 有关识别广告设备的任何其他建议(使用蓝牙MAC地址除外)将不胜感激。
  4. 谢谢,

1 个答案:

答案 0 :(得分:0)

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

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