我尝试使用以下BeaconLayout检测Kontakt Beacon:
setBeaconLayout("m:8-9=0215,i:10-13,i:14-15,i:16-17,i:18-25"));
但我似乎没有正确地做到这一点。广告包结构如下:
提前致谢。
答案 0 :(得分:14)
感谢@davidgyoung评论,我终于可以使用以下代码检测我的Kontakt信标:
public class MainActivity extends Activity implements BeaconConsumer {
protected static final String TAG = "RangingActivity";
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
beaconManager.bind(this);
}
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
Log.d(TAG, "The first beacon I see is about "+beacons.iterator().next().getDistance()+" meters away.");
}
}
});
try {
beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null));
} catch (RemoteException e) { }
}
请注意,我使用的是2.2版本的Kontakt信标,这是与上面发布的布局不同的版本。
答案 1 :(得分:5)
您的beaconLayout存在一些问题:
beaconLayout字符串中的字节偏移量以制造商数据(您显示的表格中的字节6)开头,因此您需要从所有偏移量中减去6。
该表显示信标中只有三个标识符,但beaconLayout字符串有四个。请注意,第一个标识符长度为16个字节。
如果你正常工作,请发布你使用过的正确的beaconLayout。