Можно ли обнаружить маяки на основе частичного UUID?
Можно ли обнаружить маяки на основе частичного UUID? Чтобы обнаружить маяк с определенным UUID, скажем, "08282922101291283379816fdae", мы используем Identifier.parse ("08282922101291283379816fdae"). Я пытаюсь использовать первые 3 значения в качестве идентификатора компании и хотел бы только определить маяки, специфичные для компании. Итак, мой вопрос: можем ли мы отслеживать маяки, которые начинаются с UUID и говорят "007" независимо от остальной части UUID?
Любая помощь будет высоко ценится, спасибо!
1 ответ
При использовании библиотеки маяков Android вы можете сделать это, определив пользовательский формат маяка, который задает четвертый идентификатор, который является вашим префиксом UUID. Единственная хитрость заключается в том, что вы можете сделать это только путем перехода одного или нескольких байтов, поэтому, хотя вы можете сопоставить префикс 0070 или 00, вы не можете сопоставить 007, поскольку он равен 1,5 байта. (Тем не менее, вы можете установить 16 различных регионов для соответствия 0070, 0071, 0072,... 007F, что будет соответствовать тому же, что и 007).
Вот пример с AltBeacon. То же самое возможно и с другими схемами маяков:
beaconManager.getBeaconParsers().clear();
beaconManager.getBeaconParsers().add(new BeaconParser("AltBeacon with two-byte prefix identifier").setBeaconLayout("m:2-3=beac,i:4-5,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25"));
...
Region region = new Region("Any UUID starting with 0070", Identifier.parse("0x0070", 2), null, null);