Синхронизация времени на Android через TimeServer
Знание точного времени очень важно в современном мире, в котором все может поменяться буквально за считанные минуты. А для решения некоторых задач могут отводиться и вовсе несколько секунд. К счастью, определение точного времени в любой точке земного шара — несложная задача. Достаточно лишь иметь под рукой любое устройство с выходом в интернет. Рассмотрим, как определить точное время на смартфонах и планшетах, работающих под управлением операционной системы Android.
О синхронизации времени
Существуют различные способы определения точного времени. Для обычных людей наиболее удобным и простым способом является использование серверов синхронизации времени (NTP-сервер). Большинство операционных систем, устанавливающихся на компьютеры и мобильные устройства, имеют встроенную функцию для работы с такими NTP-серверами. Алгоритм синхронизации внутренних часов устройства со временем на удаленном сервере достаточно прост:
- Пользовательское устройство посылает запрос на сервер синхронизации запрос, для чего используется специальный сетевой протокол — NTP (Network Time Protocol).
- В ответ на запрос сервер формирует NTP-пакет с нужными данными и отправляет его обратно на пользовательское устройство.
- Встроенная функция синхронизации обрабатывает пакет и настраивает внутренние часы устройства, используя данные из NTP-пакета.
- Высокая точность синхронизации (вплоть до одной сотой секунды, т.е. 10 миллисекунд) достигается благодаря тому, что функция установки времени учитывает задержку между и отправкой запроса и получение от сервера NTP-пакета.
Сам же NTP-сервер определяет точное время по реально (физически) существующему эталону времени. Это целый комплекс оборудования, в задачу которого входит отчет времени. В мире существует несколько эталонов времени, расположенных в технологически развитых странах, включая Россию. Атомные часы имеются в распоряжении «Всероссийского научно-исследовательского института физико-технических и радиотехнических измерений» (ВНИИФТРИ).
Синхронизация времени с TimeServer на Android
В операционных системах Android также имеется встроенная функция синхронизация времени по сети. Однако пользователи не могут ее настраивать. Т.е. система сверяет время с NTP-сервером, который, по сути, неизвестен владельцу Андроид-устройства. Также остается секретом и то, насколько точно работает базовая функция синхронизации часов в Android.
Для возможности синхронизации времени на смартфонах и планшетах под управлением Андроид существует только один выход — использование специальных приложений. Но и здесь есть свои нюансы. ОС Android запрещает сторонним приложениям изменять настройки даты и времени, что сделано в целях безопасности. Для полноценной работы приложений синхронизации времени требуется root-права. Без root-прав такие программы не могут изменять системные настройки в автоматическом режиме, однако определять точное время они все же в состоянии. В этом случае пользователю придется время от времени устанавливать время на своем Android-устройстве вручную.
Источник
Синхронизация времени андроид без root
Для автоматической синхронизации времени необходимы права root пользователя.
Краткое описание:
Синхронизация времени телефона с атомными часами через NTP
Описание:
Ручная или автоматическая синхронизация системного времени устройства через NTP. Акутально для практически всех наших операторов, так как они не поддерживают протокол автоматической синхронизации времени через базовые станции оператора (NITZ). Из-за этого время на вашем устройстве может постоянно отставать или убегать вперед.
Основные возможности:
- обновление времени через NTP по тапу на времени или смещении, синхронизация по тапу на системном времени а так же через меню приложения
- отображение даты или времени прошедшего с последнего момента синхронизации (меняется по тапу)
- вибро отзыв при нажатиях на активные элементы экрана
- автоматическая синхронизация времени с заданным интервалом и при загрузке
- возможность синхронизировать только через Wi-Fi (если у вас Wi-Fi отключается при засыпании, не будет синхронизироваться)
- энергоэффективные режимы синхронизации (15/30/60 минут и 1/12/14 часов) и синхронизация только при включении устройства
- русский/английский интерфейсы (время с последней синхронизации немного криво показывает множественные формы минут/часов + дата будет всегда на английском)
- не лезет в интернет если выключена системная опция Background Data (автоматическая синхронизация не будет работать)
- совместимость с Android 1.5 и более поздними версиями системы
Ручной режим для телефонов без root:
- автоматическое получение точного времени с заданным интервалом
- если разница с точным временем превышает заданное значение, показывается уведомление
- помощник для ручной синхронизации с подсказками какие значения даты/времени установить
- точность в интервале между 1 и 30 секундами (т.к. Android не позволяет устанавливать секунды)
- точность
1 секунда если ваше устройство обнуляет секунды при ручной установке времени (большинство устройств Samsung)
- сигнал точного времени для помощи при ручной установке если устройство обнуляет секунды
Управление часовым поясом (root не нужен!):
- установка часового пояса через географические координаты
- установка часового пояса согласно последней версии базы Olson (2012g) (tzdata, zoneinfo, tz database)
- установка часового пояса через ручную настройку смещения в часах
Если у вас проблема с часовым поясом в России, читайте обращение разработчика.
Версия: 1.3.1 ® ClockSync (Пост Aleksey_52 #65356255)
База, Версия 1.2.7 (2016c): Play Store / TimeZoneService.apk
Версия: 1.2.5: ClockSync_1.2.5
Версия: 1.2.4.1: ClockSync_1.2.4.1
Версия: 1.2.3: ClockSync_1.2.3
Версия 1.2.2: //4pda.to/forum/dl/post/1459537/ClockSync_1.2.2.apk
Версия 1.2.0: //4pda.to/forum/dl/post/1341385/ClockSync.apkClockSync.apk ( 207.95 КБ )
ClockSync.apk ( 208.05 КБ )
ClockSync.apk ( 195.51 КБ )
ClockSync.apk ( 248.21 КБ )
Источник
Проблемы времени и часовых поясов в Android и пути их решения
Предположим, вы уже давно используете Android, а потому может показаться, что он прекрасно справляется с задачами синхронизации времени – будильники срабатывают вовремя, каких-то явных отклонений времени не наблюдается и т. д. Однако уверены ли вы полностью в том, откуда Android на самом деле получает данные о точном времени и часовых поясах? Если у вас есть хоть какие-то сомнения о том, как это работает — добро пожаловать под кат.
В Android существует две проблемы со временем: это его непредсказуемая синхронизация и необходимость в актуализации данных о часовых поясах даже в самой свежей версии ОС.
Предыстория: Android является мобильной ОС, базирующейся на ядре Linux, он спокойно подключается к интернету и, конечно же, можно предположить, что синхронизация времени осуществляется с помощью NTP, однако, это не так. Исторически сложилось, что Android был предназначен для использования исключительно в мобильных телефонах (вспомните версию 1.6). При этом только к 3 мажорной версии он обзавёлся интерфейсом для планшетов и начали́сь другие подвижки к унификации интерфейса и начинки ОС. Однако даже версии 4.4 и Android L получают сигналы точного времени теми же методами, что их получала Nokia 3310 и другие, более ранние GSM/3GPP телефоны, т. е. от вышек сотовой связи при регистрации в сети (при подключении к вышке). При этом планшеты или другие устройства без модуля связи, в принципе не имеют возможности синхронизировать время автоматически.
К великому сожалению, чтобы научить Android синхронизировать время полностью автоматически с помощью NTP нам понадобиться root доступ ибо API для точной установки времени в Android ныне отсутствует.
Приступим. Первое, что необходимо сделать, это выключить синхронизацию времени с мобильной сетью. При этом установку часового пояса я рекомендую оставить в автоматическом режиме, а отключать её стоит, только если есть гарантия, что устройство будет работать в стационарном режиме.
Далее, необходимо установить приложение ClockSync, которое и будет выступать для нас альтернативой демону синхронизации времени с помощью NTP.
На скриншотах видно, что разница с точным временем оказалась достаточно маленькой, однако, бывают разные ситуации, у некоторых время на устройстве может даже плавать туда-сюда поскольку оператор не удосужился навести порядок у себя на БС.
Убедившись, что всё работает, настроим автоматическую синхронизацию в программе ClockSync. Для повышения точности я рекомендую включить опции «Режим высокой точности» и «Только через WI-FI». Если с первой опцией всё понятно из описания в программе (см. скриншот ниже), то вторую опцию я рекомендую включить в первую очередь не из соображений экономии мобильного трафика, а из-за того, что мобильный интернет не способен гарантировать хоть сколько-нибудь стабильные задержки.
Помимо этого я рекомендую включить опцию «При включении», чтобы лишний раз не выводить устройство из глубокого сна и тем самым сэкономить энергию.
В связи с масштабными изменениями часовых поясов в РФ осенью этого года необходимо уже сейчас задуматься об актуализации информации о них на всех устройствах и если с поддерживаемыми настольными ОС проблем не возникает, то в Android даже самая свежая версия ОС содержит устаревшие данные. Для того чтобы в этом убедиться устанавливаем TimeZone Fixer и наблюдаем неприглядную картину.
Автор программы TimeZone Fixer предупреждает нас, что обновление файлов данных о часовых поясах может полностью «сломать» устройство и даже даёт рекомендации о том как обезопасить себя от дополнительных проблем, хоть случаи проблем единичные и очень специфичные — это действительно хорошая забота о простых пользователях.
Только поэтому я и внёс этот кусочек в статью, он хоть и не имеет непосредственного отношения к проблеме, но это действительно хороший пример заботы о пользователях. В то же время предупреждение насчёт версий 4.3+ вызвано лишь малым количеством отзывов о программе для устройств с новыми версиями ОС, поэтому, пожалуйста, после использования обязательно напишите о́тзыв об этом приложении.
После обновления данных о часовых поясах программа предло́жит перезагрузится, однако, я рекомендую перезагрузить устройство самостоятельно через системное меню поскольку программа осуществляет перезагрузку фактически эквивалентную reset, что, пусть и с малой вероятностью, но может привести к проблемам и потери данных.
С удовольствием отвечу на любые вопросы или внесу дополнения, которые сообщество посчитает необходимыми, однако, хочется избежать перегруженности статьи дополнительной информацией, дабы придерживаться формата компактного руководства по решению конкретной проблемы.
UPD: Эта инструкция полностью решает проблему часовых поясов только для версий младше 4.4. С версии 4.4 нужен дополнительный патчинг, пока вопрос находится на стадии исследования возможностей для создания юзер-френдли решения.
Источник
Синхронизация времени андроид без root
Для автоматической синхронизации времени необходимы права root пользователя.
Краткое описание:
Синхронизация времени телефона с атомными часами через NTP
Описание:
Ручная или автоматическая синхронизация системного времени устройства через NTP. Акутально для практически всех наших операторов, так как они не поддерживают протокол автоматической синхронизации времени через базовые станции оператора (NITZ). Из-за этого время на вашем устройстве может постоянно отставать или убегать вперед.
Основные возможности:
- обновление времени через NTP по тапу на времени или смещении, синхронизация по тапу на системном времени а так же через меню приложения
- отображение даты или времени прошедшего с последнего момента синхронизации (меняется по тапу)
- вибро отзыв при нажатиях на активные элементы экрана
- автоматическая синхронизация времени с заданным интервалом и при загрузке
- возможность синхронизировать только через Wi-Fi (если у вас Wi-Fi отключается при засыпании, не будет синхронизироваться)
- энергоэффективные режимы синхронизации (15/30/60 минут и 1/12/14 часов) и синхронизация только при включении устройства
- русский/английский интерфейсы (время с последней синхронизации немного криво показывает множественные формы минут/часов + дата будет всегда на английском)
- не лезет в интернет если выключена системная опция Background Data (автоматическая синхронизация не будет работать)
- совместимость с Android 1.5 и более поздними версиями системы
Ручной режим для телефонов без root:
- автоматическое получение точного времени с заданным интервалом
- если разница с точным временем превышает заданное значение, показывается уведомление
- помощник для ручной синхронизации с подсказками какие значения даты/времени установить
- точность в интервале между 1 и 30 секундами (т.к. Android не позволяет устанавливать секунды)
- точность
1 секунда если ваше устройство обнуляет секунды при ручной установке времени (большинство устройств Samsung)
- сигнал точного времени для помощи при ручной установке если устройство обнуляет секунды
Управление часовым поясом (root не нужен!):
- установка часового пояса через географические координаты
- установка часового пояса согласно последней версии базы Olson (2012g) (tzdata, zoneinfo, tz database)
- установка часового пояса через ручную настройку смещения в часах
Если у вас проблема с часовым поясом в России, читайте обращение разработчика.
Версия: 1.3.1 ® ClockSync (Пост Aleksey_52 #65356255)
База, Версия 1.2.7 (2016c): Play Store / TimeZoneService.apk
Версия: 1.2.5: ClockSync_1.2.5
Версия: 1.2.4.1: ClockSync_1.2.4.1
Версия: 1.2.3: ClockSync_1.2.3
Версия 1.2.2: //4pda.to/forum/dl/post/1459537/ClockSync_1.2.2.apk
Версия 1.2.0: //4pda.to/forum/dl/post/1341385/ClockSync.apkClockSync.apk ( 207.95 КБ )
ClockSync.apk ( 208.05 КБ )
ClockSync.apk ( 195.51 КБ )
ClockSync.apk ( 248.21 КБ )
Источник