Библиотека маяков Android не предназначена для этой цели, поэтому API-интерфейсы для выполнения желаемых действий немного неудобны.
При обнаружении библиотека автоматически анализирует полезную нагрузку и преобразует байты в объект-маяк. Но поскольку библиотека также поддерживает передачу, она имеет утилиты для преобразования объекта маяка обратно в байты. При использовании iBeacon вы можете преобразовать обнаруженный маяк обратно в необработанные байты следующим образом:
BeaconParser iBeaconParser = new BeaconParser()
.setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24");
byte[] payloadBytes = iBeaconParser.getBeaconAdvertisementData(beacon);
В общем, это процесс без потерь, поскольку форматы маяка обычно используют каждый байт полезной нагрузки. В маловероятном случае, если у вас есть собственный формат маяка, который не использует все байты, вам нужно будет немного изменить формат, чтобы добавить дополнительные поля данных в конце, чтобы вся полезная нагрузка была проанализирована в маяке. В противном случае вы потеряете эти дополнительные байты при конвертации.