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();
}
因此我的问题是:
- 我假设
Beacon
的 getBluetoothAddress()
与广告商的蓝牙 MAC 地址不同是不是错了?如果不同,Beacon
返回的地址是什么?
- 如何在广告前获取广告设备的Beacon.getBluetoothAddress()是什么?
- 任何其他关于识别广告设备的建议(除了使用蓝牙 MAC 地址)将不胜感激。
您使用的是哪种信标(制造商)?
广告 MAC 地址是一个欺骗性地址,因此您绝对有可能获得不同的值。甚至有制造商(例如 Gimbal)内置 MAC 地址轮换,因此接收设备将无法从最初来自同一设备但具有不同 MAC 的两个信号中识别设备.
在通常情况下,如果您知道要在您的应用中做出反应的所有信标,那么通过它的 UUID、主要和次要组合来识别信标就足够了。
我目前正在使用 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(); }
因此我的问题是:
- 我假设
Beacon
的getBluetoothAddress()
与广告商的蓝牙 MAC 地址不同是不是错了?如果不同,Beacon
返回的地址是什么? - 如何在广告前获取广告设备的Beacon.getBluetoothAddress()是什么?
- 任何其他关于识别广告设备的建议(除了使用蓝牙 MAC 地址)将不胜感激。
您使用的是哪种信标(制造商)? 广告 MAC 地址是一个欺骗性地址,因此您绝对有可能获得不同的值。甚至有制造商(例如 Gimbal)内置 MAC 地址轮换,因此接收设备将无法从最初来自同一设备但具有不同 MAC 的两个信号中识别设备.
在通常情况下,如果您知道要在您的应用中做出反应的所有信标,那么通过它的 UUID、主要和次要组合来识别信标就足够了。