/ / Як створити ідентифікатори URL-адреси Eddystone? - ibeacon-андроїд, eddystone

Як створити ідентифікатори URL-адреси Eddystone? - ibeacon-андроїд, eddystone

Я використовую версію 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 для відповіді № 1

Eddystone-URL використовує індивідуальний алгоритм стиснення для перетворення людської читабельної URL-адреси в байти, які передаються. The Бібліотека Beacon для Android включає утиліти класу, який робить це стиснення / декомпресії для вас.

byte[] urlBytes = UrlBeaconUrlCompressor.compress("http://example.com")
Identifier identifier = Identifier.fromBytes(urlBytes, 0, urlBytes.length, false);

Перший рядок вище генерує масив байтів, який можна перетворити на ідентифікатор, використовуючи другу лінію. Дивіться документи бібліотеки для більше інформації про роботу з маяками URL-адреси.