Alt Beacon Parser не работает даже после добавления нового макета парсера - PullRequest
0 голосов
/ 13 июня 2019

Даже после обновления диспетчера маяков новым анализатором скан-фильтр все еще использует старый синтаксический анализатор и не может выполнить синтаксический анализ.

Старый синтаксический анализатор маяков

 beaconParserList: altbeacon, m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25

Установка нового маякаparser

        beaconManager.getBeaconParsers().clear();
        BeaconParser beaconParser = new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25");
        beaconManager.getBeaconParsers().add(beaconParser);

Результаты сканирования после включения отладки в библиотеке Alt-Beacon

 D/BeaconParser: Processing pdu type FF: 0201061aff4c000215fb7dd88a496f42c49f4a382d8258b4ee03e8044ec41e09354141413d6d536d21366534563b74395a3d42497b2a4d6e417166474800 with startIndex: 5, endIndex: 29
 D/BeaconParser: This is not a matching Beacon advertisement. (Was expecting be ac.  The bytes I see are: 0201061aff4c000215fb7dd88a496f42c49f4a382d8258b4ee03e8044ec41e09354141413d6d536d21366534563b74395a3d42497b2a4d6e417166474800

1 Ответ

0 голосов
/ 14 июня 2019

Если вы изменяете ваши парсеры маяка после , вы начинаете сканирование, вызывая beaconManager.bind() или создавая RegionBootrap(...), тогда вам нужно вручную применить ваши изменения с beaconManager.applySettings()

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

...