Я разрабатываю приложение, в котором мне нужно синхронизировать время нескольких устройств без предоставления корневого доступа к приложению. Поскольку я не могу программно изменить время устройства на Android без получения root-доступа, у меня есть одно устройство, действующее как истинный источник времени, и другие устройства должны каким-то образом подключаться к нему, получать время и сохранять локальное смещение.
Для этого я использую Bluetooth с низким энергопотреблением. Ведущее устройство играет периферийную роль, объявляя настраиваемую услугу, содержащую характеристику «текущее время», а другие устройства, действующие как центральные, будут искать эту рекламу, подключаться к ведущему, считывать текущее время. Пока мне удалось заставить его работать только для одного периферийного устройства и одного центрального.
Может ли периферийное устройство подключаться к нескольким центральным устройствам, если да, то каков предел количества подключений?
Есть ли лучший способ решить этот вариант использования синхронизации времени нескольких устройств?




Это немного специфично для SoC, но вам стоит почитать этот блог: https://devzone.nordicsemi.com/b/blog/posts/wireless-timer-synchronization-among-nrf5-devices
Максимальный джиттер 220 нс за 30 минут - настоящее достижение. Хотя он не использует BLE, но проприетарный 2,4 ГГц, идея может быть применена и для BLE, но не с той же производительностью.