Правильный макет для обнаружения маяка Kontakt на Android с помощью AltBeacon

Я пытаюсь обнаружить Kontakt Beacon со следующим BeaconLayout:

setBeaconLayout("m:8-9=0215,i:10-13,i:14-15,i:16-17,i:18-25")); 

Но я, кажется, не делаю это правильно. Структура рекламного пакета выглядит так:

Введите описание изображения здесь

Заранее спасибо.

Solutions Collecting From Web of "Правильный макет для обнаружения маяка Kontakt на Android с помощью AltBeacon"

Благодаря комментариям @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) { } } 

Обратите внимание, что я использую beacon Kontakt версии 2.2 версии, которая отличается от размещенной выше версии.

Несколько проблем с вашим beaconLayout:

  1. Байт-смещения в строке beaconLayout начинаются с данных производителя (байт 6 в таблице, который вы показываете), поэтому вам нужно вычесть 6 из всех ваших смещений.

  2. В таблице показано, что в маяке есть только три идентификатора, но ваша строка beaconLayout имеет четыре. Обратите внимание, что первый идентификатор имеет длину 16 байт.

Если вы его заработаете, отправьте правильный beaconLayout, который вы использовали.