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