Допустим, вы давно пользуетесь Android, и поэтому может показаться, что он отлично справляется с задачами синхронизации времени — будильники срабатывают вовремя, нет явных отклонений по времени и т. д. Однако полностью ли вы уверены, где находится Android? происходит от? реально получает данные о точном времени и часовых поясах? Если у вас есть сомнения по поводу того, как это работает, добро пожаловать под кат.
У Android есть две проблемы со временем: его непредсказуемая синхронизация и необходимость обновления данных о часовом поясе даже в последней версии ОС.
Справочная информация: Android — мобильная ОС на базе ядра Linux, она легко подключается к Интернету и, конечно, можно предположить, что синхронизация времени осуществляется с помощью НТП Однако это не так.
Исторически сложилось так, что Android предназначался для использования исключительно на мобильных телефонах (например, версия 1.6).
При этом только к 3-й мажорной версии обзавелся интерфейсом для планшетов и начался другой прогресс в направлении унификации интерфейса и аппаратного обеспечения ОС.
Однако даже версии 4.4 и Android L получают сигналы времени теми же методами, которыми их получали Nokia 3310 и другие более ранние телефоны GSM/3GPP, то есть от вышек сотовой связи при регистрации в сети (при подключении к вышке).
При этом планшеты или другие устройства без модуля связи в принципе не имеют возможности автоматической синхронизации времени.
К сожалению, чтобы научить Android полностью автоматически синхронизировать время по NTP, нам нужен root-доступ, потому что API для точной настройки времени в Android на данный момент не существует. Давайте начнем.
Первое, что вам нужно сделать, это отключить синхронизацию времени с мобильной сетью.
При этом я рекомендую оставить настройку часового пояса в автоматическом режиме, а отключать ее только в том случае, если есть гарантия, что устройство будет работать в стационарном режиме.
Скриншот окна настроек «Настройки -> Дата и время» версии Android 4.x:
Далее вам необходимо установить приложение ClockSync , который будет для нас альтернативой демону синхронизации времени с помощью NTP. Скриншоты окна программы ClockSync до синхронизации (слева) и после (справа):
На скриншотах видно, что разница с точным временем оказалась совсем небольшой, однако бывают разные ситуации, у некоторых время на устройстве может быть, даже плавать взад и вперед потому что оператор не удосужился почистить свой БС.
Убедившись, что все работает, настроим автоматическую синхронизацию в программе ClockSync. Для повышения точности рекомендую включить опции «Режим высокой точности» и «Только через WI-FI».
Если с первым вариантом все понятно из описания в программе (см.
скриншот ниже), то второй вариант рекомендую включать в первую очередь не из соображений экономии мобильного трафика, а потому, что мобильный интернет не способен гарантировать хоть какую-то стабильную работу.
задержки.
Еще немного о точности: Все еще широко распространенный мобильный Интернет 2-го поколения (GPRS/EDGE) в принципе не способен обеспечить стабильные задержки передачи.
Даже Интернет 3-го (3G) и в некоторой степени 4-го (LTE/LTE-advanced) поколений, когда сеть или каналы связи между БС сильно загружены, что является типичной ситуацией для крупных населенных пунктов, не может гарантировать стабильную работу сети.
задержки.
Поэтому даже при приближении конечная точность установки времени может быть хуже долей секунды и даже легко достигать нескольких секунд. Кроме того, рекомендую включить опцию «При включении», чтобы лишний раз не выводить устройство из глубокого сна и тем самым экономить электроэнергию.
Скриншот настроек автоматической синхронизации в ClockSync:
В связи с масштабным смена часовых поясов в РФ Этой осенью необходимо уже сейчас задуматься об обновлении информации о них на всех устройствах, и если с поддерживаемыми десктопными ОС проблем нет, то в Android даже последняя версия ОС содержит устаревшие данные.
Чтобы убедиться в этом, устанавливаем Исправление часового пояса и мы видим неприглядную картину.
Скриншот программы TimeZone Fixer, работающей на Android 4.4.4 (прошивка Cyanogenmod от 4 августа 2014 года), на котором четко видно, что данные в прошивке устарели:
Немного здравого смысла и заботы о пользователях: Автор программы TimeZone Fixer предупреждает нас, что обновление файлов данных о часовых поясах может полностью «сломать» устройство и даже дает рекомендации, как обезопасить себя от дополнительных проблем, хотя случаи проблем единичны и весьма специфичны — это действительно хорошо забота о простых пользователях.
Это единственная причина, по которой я включил эту статью в статью; хотя это и не имеет прямого отношения к проблеме, это действительно хороший пример заботы о пользователях.
В то же время предупреждение о версиях 4.3+ вызвано лишь небольшим количеством отзывов о программе для устройств с новыми версиями ОС, поэтому обязательно напишите отзыв об этом приложении после использования.
После обновления данных о часовом поясе программа предложит перезагрузиться, однако я рекомендую перезагрузить устройство самостоятельно через системное меню, так как программа выполняет перезагрузку, фактически эквивалентную сбросу настроек, что хоть и с малой вероятностью, но может привести к проблемам и потере данных.
Буду рад ответить на любые вопросы или внести дополнения, которые сообщество сочтет необходимыми, однако хотелось бы не перегружать статью дополнительной информацией, чтобы придерживаться формата компактного руководства по решению конкретной задачи.
УПД: Данная инструкция полностью решает проблему часовых поясов только для версий младше 4.4. С версии 4.4 необходим дополнительный патчинг, пока вопрос находится на стадии изучения возможностей создания удобного решения.
Теги: #Android #Системное администрирование #ntp #timezone #UTC
-
Реклама С Оплатой За Клик: Основы
19 Oct, 24 -
Выпущен Jquery Ui 1.8
19 Oct, 24 -
Поведение Окна При Нажатии.
19 Oct, 24 -
Эффективный Маркетинг Покоряет Канны
19 Oct, 24 -
Искусство Каждый День
19 Oct, 24