Я використовую версію 2.5.1 з Бібліотека Beacon для Android з новою підтримкою Eddystone. Я бореться за створення нового регіону з заданою URL-адресою для фільтрації лише для маяків з цією URL-адресою. Наприклад, я хочу лише звернутись до маяків, починаючи з http://example.com
Макет BeaconParser, який я використовую, встановлює (в моєму випадку) фіксовану довжину Scheme + Host + TLD до Id1 та шлях до Id2.
Як створити Identifier
наприклад, для маяка URL-адреси Eddystone?
Я хочу створити новий регіон так:
Identifier exampleIdentifier = Identifier.parse("http://example.com");
Region exampleRegion = new Region("Example Region", exampleIdentifier, null, null);
Це, очевидно, не працює, оскільки Parser не може впоратися з заданою URL-адресою. Чи не підтримується цей параметр, чи я повністю на цьому шляху неправильний?
Для мене це було першим перетворенням ідентифікатора на те, що бібліотека розуміє (наприклад, шістнадцяткове позначення), а потім намагається проаналізувати це ( .parse("0x123456..." )
. Але я не впевнений, що це найкращий і найчистіший спосіб це зробити.
Відповіді:
1 для відповіді № 1Eddystone-URL використовує індивідуальний алгоритм стиснення для перетворення людської читабельної URL-адреси в байти, які передаються. The Бібліотека Beacon для Android включає утиліти класу, який робить це стиснення / декомпресії для вас.
byte[] urlBytes = UrlBeaconUrlCompressor.compress("http://example.com")
Identifier identifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);
Перший рядок вище генерує масив байтів, який можна перетворити на ідентифікатор, використовуючи другу лінію. Дивіться документи бібліотеки для більше інформації про роботу з маяками URL-адреси.