Краткая версия:
Проблема. Мне нужно несколько устройств Android, чтобы сделать что-то в одно и то же время (в пределах около 100 миллисекунд). Например, я хочу, чтобы все устройства воспроизводили определенный звук в ранее определенный момент времени.
Вопрос: Могу ли я использовать время GPS, чтобы синхронизировать часы устройств?
Более длинная версия:
Несколько человек, имеющих устройства Android, находятся в одном и том же месте на открытом воздухе (для определенного спортивного события). Все устройства должны сигнализировать о некоторых событиях в одно и то же время. (Какое время будет определено заранее, и не важно, чтобы они делали это именно в это время, пока они это делают одновременно). FWIW: эти мероприятия помогут людям начать свою спортивную деятельность одновременно.
Вот предположения, которые я могу сделать:
- Там может быть или не быть покрытие ячеек. (Это на улице и может быть далеко от городских районов).
- Устройства могут подключаться или не подключаться к Интернету. (Некоторые люди могут не иметь плана данных)
- Устройства могут разговаривать друг с другом. Если устройства не подключены к Интернету, они будут подключены через Wi-Fi (хотя Wi-Fi может не иметь интернет-шлюз).
- Устройства снаружи (а не внутри зданий). (Это хорошо, это означает, что все устройства могут получить GPS-исправление).
- Устройства физически близки друг к другу (т.е. в пределах 300 м2). (Не уверен, что это важно)
Я не могу использовать внутренние часы, чтобы знать, когда играть в события: пользователи могут вручную изменить время, и даже если устройство настроено на получение времени от сотовой сети, эта сеть может не обеспечить точное время. Два устройства могут быть забронированы в разных сетях, и поэтому их время может не синхронизироваться очень хорошо.
При запуске приложения каждое устройство может запросить исправление GPS и сохранить разницу между временем GPS и его внутренними часами. Теперь мастер может объявить события на основе этого времени GPS (используя его внутренние часы и вычитая смещение, которое он сохранил ранее).
Будет ли это достаточно точным и надежным?
Большое спасибо заранее, Андреас Лейтнер