我目前正在使用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地址)将不胜感激 .
谢谢,
1 回答
你使用什么样的信标(制造商)?广告MAC地址是一个欺骗性地址,因此您可能会得到不同的值 . 甚至有制造商(例如Gimbal)内置MAC地址旋转,因此接收设备将无法从最初来自同一设备但具有不同MAC的两个信号中识别设备 .
在通常情况下,如果您知道要在应用中做出反应的所有信标,那么通过它的UUID,主要和次要组合来识别信标应该足够了 .