Автоопределение времени андроид не работает. Настройка правильных времени и даты на Android

12 августа 2014 в 17:07

Проблемы времени и часовых поясов в Android и пути их решения

  • Системное администрирование
  • Tutorial

Предположим, вы уже давно используете Android, а потому может показаться, что он прекрасно справляется с задачами синхронизации времени – будильники срабатывают вовремя, каких-то явных отклонений времени не наблюдается и т. д. Однако уверены ли вы полностью в том, откуда Android на самом деле получает данные о точном времени и часовых поясах? Если у вас есть хоть какие-то сомнения о том, как это работает - добро пожаловать под кат.


В Android существует две проблемы со временем: это его непредсказуемая синхронизация и необходимость в актуализации данных о часовых поясах даже в самой свежей версии ОС.

Предыстория: Android является мобильной ОС, базирующейся на ядре Linux, он спокойно подключается к интернету и, конечно же, можно предположить, что синхронизация времени осуществляется с помощью NTP , однако, это не так. Исторически сложилось, что 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 и наблюдаем неприглядную картину.

Скриншот программы TimeZone Fixer, запущенной на Android 4.4.4 (прошивка Cyanogenmod от 4 августа 2014), на котором хорошо видно, что данные в прошивке неактуальные:

Немножечко здравого беспокойства и заботы о пользователях:

Автор программы TimeZone Fixer предупреждает нас, что обновление файлов данных о часовых поясах может полностью «сломать» устройство и даже даёт рекомендации о том как обезопасить себя от дополнительных проблем, хоть случаи проблем единичные и очень специфичные - это действительно хорошая забота о простых пользователях.

Только поэтому я и внёс этот кусочек в статью, он хоть и не имеет непосредственного отношения к проблеме, но это действительно хороший пример заботы о пользователях. В то же время предупреждение насчёт версий 4.3+ вызвано лишь малым количеством отзывов о программе для устройств с новыми версиями ОС, поэтому, пожалуйста, после использования обязательно напишите о́тзыв об этом приложении.


После обновления данных о часовых поясах программа предло́жит перезагрузится, однако, я рекомендую перезагрузить устройство самостоятельно через системное меню поскольку программа осуществляет перезагрузку фактически эквивалентную reset, что, пусть и с малой вероятностью, но может привести к проблемам и потери данных.

С удовольствием отвечу на любые вопросы или внесу дополнения, которые сообщество посчитает необходимыми, однако, хочется избежать перегруженности статьи дополнительной информацией, дабы придерживаться формата компактного руководства по решению конкретной проблемы.

UPD: Эта инструкция полностью решает проблему часовых поясов только для версий младше 4.4 . С версии 4.4 нужен дополнительный патчинг, пока вопрос находится на стадии исследования возможностей для создания юзер-френдли решения.

Кажется, что такое простое действие, как настройка даты и времени на Android, не должно вызывать затруднений. Действительно, для опытных владельцев смартфонов или планшетов это банальная операция. Однако для тех, кто впервые держит в руках устройство под управлением этой операционной системы, настройка данных параметров может вызывать вопросы. Ниже разберем, как настроить дату и время на Android.

Меняем дату и время вручную

Для корректировки времени и даты вручную, нужно войти в настройки устройства. Сделать это можно двумя путями:

  1. Вертикальным от строки состояния раздвинуть шторку и тапнуть на иконке, изображающую шестеренку.
  2. Войти в меню приложений, тапнув по иконке с изображением шести точек, расположенной в док-баре. Найти иконку с изображением шестеренки и коротким по ней открыть раздел «Настройки ».

Найдите внизу открывшегося списка пункт «Дата и время » и коротким касание по нему откройте данную вкладку. В некоторых гаджетах меню настроек может выглядеть иначе, а настройки времени и даты надо искать в разделе «Опции ».

Ручная настройка времени и даты будет доступна, если снята галочка с опции «Автоопределение времени » или «Дата и время сети » находится в положении выключено (в зависимости от версии Android).

  • Чтобы поменять дату, выбираем пункт “Дата » или «Установить дату », где выбираем число, месяц и год и подтверждаем тапом по кнопке «Ок».
  • Чтобы поменять время, нужно выбрать пункт «Время » или «Установка времени », где устанавливаем правильное время и подтверждаем тапом по кнопке «Ок». Здесь же можно установить формат времени – 12 часовой или 24 часовой.

Автоматическая установка даты и времени

Android может выстанавливать время и дату в автоматическом режиме. В этом режиме сведения синхронизируются из сети оператора. Естественно, сим карта должна быть установлена в устройство. Для автоматической установки времени и даты нужно установить галочку на пункте «Автоопределение времени ». Ручная установка при этом станет недоступна.

Есть несколько причин появления этой “временной аномалии” в планшете. И поверьте, если время сбивается, так это вряд ли от того, что планшет разучился считать.


Список основных причин, почему так бывает, и способы решения

    1. Вы выключаете планшет на ночь, например, для экономии заряда. Очень распространенная причина, и единственный способ заставить время работать правильно — прекратить без весомой причины выключать планшет. Это ж не ноутбук, и не телевизор.
    2. Если у вас планшет оборудован 3G модулем, и в него вставлена сим-карта, вспомните, где вы покупали симку. Возможно, вы покупали карточку в другом регионе, где другой часовой пояс. И если у вас в настройках стоит галочка “Дата и время сети” , это означает, что на планшете выставляется время, заданное настройками оператора в том регионе, где покупалась SIM-карта. Решение — снять эту галочку, и выставить время вручную.

  1. “Плохая” прошивка. Если вы баловались с перепрошивкой планшета, вполне возможно, что установленная вами прошивка содержит какой-то баг. Решение — прошейтесь официальным программным обеспечением.
  2. Проблемой может быть и сам аппарат. Говорят, что у китайских планшетах завихрения со временем — довольно частое явление. В борьбе с этим недугом поможет приложение ClockSync (требует ROOT права для работы). Эта программа позволит настроить автоматическую синхронизацию времени через интернет, главное в настройках даты и времени снимите галочку с пункта “Часовой пояс сети”, и поставьте правильный часовой пояс, соответствующий вашему региону.

О том, что часы в мобильном отстают узнаешь, как правило, когда куда-то опоздал, примеру, на поезд. В XXI веке неприемлемо когда ваши часы спешат или отстают больше чем на минуту.

И если к наручным часам претензий нет, то смартфоны просто обязаны показывать точное время. Но как показывает практика — это не всегда так. Часы на телефонах такие же «брехучие» как и старые ходики у бабушки в деревне.

Чем определяется точность электронных часов

В первую очередь точностью настройки и стабильностью кварцевого генератора (резонатора). Точность и стабильность частоты последнего как правило составляет 10 -6 . В идеале при таком значении часы убегают чуть более 30 секунд в год.

На практике стабильность немного хуже, так как на частоту резонатора влияют параметры окружающей среды (температура, давление) и напряжение питания генератора. Так же в состав генератора входят и другие элементы, к примеру конденсаторы, параметры которых сильнее зависят от внешних воздействий. В результате часы могут убегать до 30 секунд в месяц.

Повышаем точность часов

В профессиональных устройствах, например в приемо-передающей аппаратуре спутникового телевидения, стабильность генераторов намного выше и может достигать значений 10 -12 .

Поэтому напрашивается сам собой способ взять за эталон частоту несущей внешнего источника сигнала. И использовать ее как опорную для нашего генератора. Возможны два пути: аппаратный и программный.

В первом случае частота генератора часов подстраивается под частоту несущей передающей вышки GSM. Во втором случае базовая вышка GSM передает сигналы точного времени и операционная система подстраивает часы.

Но как показывает отечественная действительность, на сотовых операторов надежды нет. Я несколько раз попадал в ситуацию, когда время на часах перескакивало на несколько часов. После чего пришлось отключить опцию использования данных предоставляемых сетью.

Серверы точного времени

Так как смартфон это компьютер с доступом в интернет, то проще всего синхронизировать часы с эталонными серверами точного времени. В стандартных прошивках этой возможности нет. Но проблема решается установкой допольнительного ПО. Программ таких несколько, и мне приглянулась одна — ClockSync от «отечественного производителя»:-).

ClockSync синхронизирует системное время Android устройства через Интернет по протоколу NTP с серверами точного времени. Программа полезна если оператор сотовой связи не поддерживает NITZ (автоматическую синхронизацию времени) или посылает неверные значения, а также в случае, если часы телефона сильно убегают вперед или отстают.

Работает на планшетах. Актуально если нужно точное время. Тем более на устройствах без GSM модуля.

Не секрет, что российские законодатели, особенно те, что сидят в нижней палате парламента, ребята очень активные и хоть зарплату им не плати, но дай понавыпускать различных нормативных актов. Так вот, летом 2014-го года парламентарии взяли и приняли очередной закон о замене часовых поясов на территории Российской Федерации. В каких-то регионах часовой пояс не поменялся, а в каких-то он сменился на новый. Но, многие производители электроники были не готовы к такому повороту, что осенью время вдруг взяло и поменялось.

Не готовы к подобному радикальному шагу были и в компании Samsung. Так как даже для своего флагмана S5 Samsung не позаботился о выпуске своевременного обновления к прошивке с поправленной часовой зоной. Например, в Москве, часовая зона с GMT+4 была переведена на GMT+3. Чем сей перевод чреват для пользователей? А тем, что сразу же нарушается стройный распланированный ход жизни владельца. Все напоминания, все встречи и даже записи в журнале звонков, в мгновение ока перемещаются в пространстве-времени и угадать, на какое нужно ставить время напоминание, что бы оно сработало именно тогда, когда нужно может не каждый обладатель красного диплома престижного вуза. А, что уж говорить о других?

И пока Samsung тормозит с выпуском обновления, попробуем самостоятельно разобраться, что нужно сделать с телефоном продать и купить Nokia или iPhone , что бы он нормально отображал время и с нужным часовым поясом.

Вариант 1. Автоматический.

Вариант 2. Прикинуться шлангом.

В случае же, когда сотовый оператор настолько безалаберный, что не предоставляет надежного сервиса в отношении времени своим абонентам, то стоит вообще подумать, насколько целесообразно продолжать платить такому оператору. Ну, а пока идут размышления, необходимо вручную установить актуальную часовую зону в телефоне.

Для этого, необходимо отключить функции получения времени, даты и часовой зоны от мобильного оператора. Для этого необходимо зайти в настройки телефона, далее в системные настройки и выбрать пункт «Дата и время». Тут снимаем галки с «Автоматического определения времени» и с «Автоопредел. часового пояса». А далее, в меню выбора часового пояса выбираем часовой пояс местности где, во-первых нет перехода на зимнее или летнее время, а во-вторых действует нужная часовая зона.

Поскольку для Москвы по-новому действует зона GMT+3, а по умолчанию в телефоне для Москвы жестко прошита зона GMT+4, то для того, что бы время вернулось в нормальное русло, придется выбрать, например Минск, у которого временная зона соответствует с нужными для Москвы значениями. Для других регионов действовать нужно аналогичным образом.

И этот способ подмены временной зоны самый верный и самый безопасный до тех пор, пока для телефона не будет выпущено нормальное обновление прошивки, в которой данная проблема решена производителем. Хотя чисто эстетически при использовании чужой временной зоны не все чисто. Например, при отправке приглашения календаря с телефона, его получатель может быть обескуражен тем, что вы находитесь в часовой зоне Белоруссии.

Другие варианты подходят только для продвинутых пользователей, поскольку могут с легкостью превратить ваш новенький S5 лишь в кучку кремния, стекла и пластика. Я предупредил.

Вариант 3. Для джидаев.

Если вы настоящий компьютерный энтузиаст, то наверняка на вашем телефоне уже получен рут-доступ. Если вы не знаете, что это такое, то дальше можно и не читать.

В систему Android, заточенной для использования по всему миру, не только встроенна настоящая многоязычность, но и возможность использования телефона с любой временной зоной. Обычно часовые пояса достаточно постоянны и не меняются десятилетиями. И именно по этой причине, все данные о наименованиях часовых поясов, а также их смещениями от нулевого часового пояса занесены в специальную базу данных расположенную в защищенном разделе внутренней памяти телефона. И изменить её можно только либо посредством обновления всей прошивки целиком, либо получив рут-доступ изменить только данные непосредственно в этой базе данных.

Итак, рут-доступ в наличии и для того что бы заменить данные в базе данных с часовыми поясами на телефоне необходимо использовать бесплатную программу TimeZone Fixer . При запуске, программа определяет текущую версию установленной на телефоне базы данных и при необходимости производит обновление имеющихся в ней значений. После завершения работы, необходимо перезагрузить телефон. Конечно, изменить базу данных можно и при помощи других программ, доступных также с Google Play, равно, как и провести все манипуляции полностью самостоятельно используя лишь стандартный инструментарий.

После перезагрузки, в списке часовых зон наконец-то появляется искомая зона для Москвы GMT+3, и правильные зоны для других регионов. Выбираете нужный (свой) регион, предварительно не забыв отключить автоматическое обновление времени и часового пояса из сотовой сети. И вроде бы все должно исправиться и наладиться но, увы, Galaxy S5 работает на системе Android 4.4.x, а именно в семействе этих систем, ради красоты или каких-то других целей, временные зоны прописались еще в одном месте. Возможно, что аналогичное поведение будет сохранено и во всех последующих версиях Android.

Теперь, время и временная зона на телефоне отображаются верно, а вот события в Google Calendar, время звонков в журнале и SMS в папке с SMSками отображаются неверно. Используется старая часовая зона. Все дело в том, что необходимо поменять еще один файл, в котором по воле не совсем грамотных разработчиков системы, хранятся альтернативные значения для временных зон. Что бы исправить и это, необходимо сделать следующее:

А. Скопировать файл, расположенный по адресу /system/usr/icu/icu51dt.dat с телефона на компьютер или на SD карточку телефона. Сделать это можно, например, при помощи Root Explorer или аналогичной программы. Учтите, что файл достаточно объемный, порядка 18 мегабайт.

Б. Полученный файл загрузить на страничку сайта одного из фанатов операционной системы и дождаться окончания обработки. Скачать обработанный файл обратно. Если сайт недоступен, то необходимо поискать уже обработанные файлы именно под ваш телефон, либо попробовать разобраться самостоятельно с инструментарием ICU .

В. Скопировать скачанный обработанный файл с сайта обратно в /system/usr/icu/icu51dt.dat. Убедиться, что права доступа для всех групп установлены как минимум в режим чтения. Перезагрузить телефон.

Г. Наслаждаться правильной часовой зоной, отсутствием сдвига времени в календаре, звонках и SMS-ках.

Послесловие

Вообще, термин GMT (Greenwich Mean Time) несколько устарел. Дело в том, что время по Гринвичу уже давно никто не измеряет. Кончилось время Британской империи, кончился и GMT. Нынче мерилом начала отсчета принято использовать UTC. Хотя для бытового применения разница существует только в наименовании стандартов.

С другой стороны, поведение как производителей, которые кидают своих потребителей на произвол судьбы, так и сотовых операторов, которые из года в год плюют на своих абонентов, не соизволяя настроить свои сети с целью выдачи верного времени и верной временной зоны, просто возмутительны и достойный порицания. Особенно это относится к компаниям, которые насильно защищают свои телефоны всевозможными системами защиты, каковые не позволяют пользователям изменять системные параметры своих телефонов.