sonyps4.ru

Автоопределение времени андроид. Как изменить и установить время на андроиде

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 (HTC Hero) и хотел написать в песочницу, но все откладывал на потом. А сегодня появилась очередная статья «Обновление временных зон на Android» практически похоронившая идею написания и, подтвердившая идею, что не надо откладывать важные вещи на потом. Но… немного повспоминав, я всё-таки решился, потому что в данных статьях рассматривалась проблемы связанные с переходом на зимнее/летнее время и совсем не затрагивался момент касающийся работы виджета часов с погодой и автоматического определения времени через оператора сотовой связи.

Все началось с того, что был приобретен новый телефон HTC Desire S.

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

На картинке может показаться, что всё в порядке, однако время на самом деле на телефоне убежало на час назад. Можно отключить автоматическое определение и выставит зону руками, но тогда получим следующее:

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

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

Можно было на все это забить, отключить, выставлять руками и не обращать внимания на виджет, но… это же Android - а это значит, что мы можем и должны его победить!

И так, мы начинаем
Новый телефон был на тот момент не рутованый и сделать его таковым не представлялось возможным. Поэтому для экспериментов был взят HTC Hero с оригинальной прошивкой + root/busybox/apps2sd, на котором были точно такие же проблемы.

Нашли через osmonitor приложение, в котором выбирается часовой пояс - (com.android.settings). Посмотрели исходники пакета com.android.settings и выяснили, что ресурсы загружаются из XML файла timezones.xml .

Достали apk этого приложения /system/app/Settings.apk следующей командой:
adb pull /system/app/Settings.apk

Не стану описывать все подробности работы APK manager и Android SDK tools, думаю, заинтересованные люди легко разберутся. Остановлюсь только на ключевых моментах.

С помощью APK manager произвели следующие действия

  • decompile
  • ручками в другом окне отредактировали файлы
  • compile. При компиляции APK manager задает вопросы:
    «Is this a system apk (y/n)» – отвечаем yes
    «Aside from the signatures, would you like to copy over any additional files that you didn"t modify from the original apk in order to ensure least # of errors (y/n)» -тоже отвечаем yes.
    Далее действуем по предложенной APK manager-ом инструкции, в другом окне удаляем из директории keep файлы, которые мы изменили + resources.arsc.
  • Завершаем сборку.
Мы сделали изменения для своего города, по аналогии жители других городов тоже смогут попробовать устранить данную проблему на своих телефонах.

Получившийся apk поместили обратно в телефон:
adb push Settings.apk /system/app/

Этим мы добились того что в списке ручного выбора временной зоны появился Novosibirsk.

Наш город появился в списке, но определение временной зоны в автоматическом режиме по-прежнему работало неверно. Для этого мы пошли дальше и выяснили что, настройки временных зон для городов хранятся в базе данных, а именно в файле /system/etc/WPDB.zip.
Достав его из телефона с помощью всё того же adb, мы извлекли из него две базы

  • WP_0409WWE.db
  • WP_0419RUS.db
для английского и русского языков соответственно. Посмотрев на данные, мы обнаружили, что для нашего города, временная зона прописана как Asia/Almaty, пришлось поправить и этот момент, для этого в базах поменяли timezoneId на Asia/Novosibirsk (использовали Lita в качестве редактора SQLite database):
update locationlist set timezoneId = "Asia/Novosibirsk" where name = "Novosibirsk" -- (для WP_0409WWE.db) update locationlist set timezoneId = "Asia/Novosibirsk" where name = "Новосибирск" -- (для WP_0419RUS.db)
Кроме того, еще в одну базу добавили запись о нашем городе, а именно в /system/etc/timezones.db
Добавили запись, timezoneId: Asia/Novosibirsk, остальные поля Novosibirsk, ru – Новосибирск.

Для того чтобы все сделанные изменения вступили в силу, сбросили кэш для приложений
Clock, Settings и Weather Provider. Ну и для полной уверенности перезапустили телефон.

Итоги

В результате получили вот такие пироги:

Как мы видим, в автоматическом режиме зона определяется корректно, системное время и время на виджете одинаковое, ну и в ручном режиме все в порядке.

Ввязавшись в войну со временем, мы решили идти до конца. А именно решить и проблему отмены перехода на зимнее/летнее время.
Скачали самую свежую tzdata (aka timeinfo.dat) с, тогда еще доступного, ресурса

Статья расскажет, как настраивать время на смартфонах и Айфонах.

Навигация

Многие пользователи, купившие мобильные устройства под управлением “IOS ” или «Android », иногда сталкиваются с проблемой, связанной со сбитыми датой и временем. Иногда часы сбиваются, если вынуть аккумулятор из телефона для замены симки и вставить обратно.

В данной статье мы поговорим о том, как правильно настраивать часы в гаджетах с операционными системами “IOS ” и «Android ».

Как настроить время в «Android»?

Настроить время в устройствах с ОС «Android » достаточно просто:

  • Зайдите в настройки гаджета, на вкладке «Система и устройство » нажмите на «Дополнительно ».

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Далее зайдите в «Дата и время »

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Теперь вы сможете настроить дату и время, а также некоторые другие параметры, связанные с часовым поясом и форматом отображения часов.

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

Настроить время в «Android » есть возможность иными способами, например, при помощи программы «Часы »:

  • Зайдите в программу «Часы »

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Далее зайдите в параметры (три вертикальные точки)

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Затем настраивайте время и дату согласно вашему часовому поясу

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

По какой причине сбивается время и дата в телефонах, планшетах под управлением «Android»?

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

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

Просто отключите эти параметры и включите их заново.

Как настроить время в «IOS»?

Теперь рассмотрим, как следует настраивать время в Айфонах под управлением «IOS »:

  • В настройках Айфона пройдите в пункт «Основные »

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Затем пройдите в «Дата и время »

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Вы увидите следующую картину

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Здесь можно установить формат времени (механические часы, электронные часы). По умолчанию здесь настроены механические часы, то есть, когда на циферблате отображено двенадцать делений. Но не все любят такой вариант, многим удобнее пользоваться часами с отображением всех 24 часов в сутках. На скриншоте выше включён именно такой формат.
  • Отключите опцию «Автоматически ». Включать её нужно тогда, когда вы хотите настроить гаджет на автоматическое определение даты и времени по часовому поясу. Для этого необходим Интернет. Но мы ниже приведём ряд причин, по которым эту опцию стоит отключить.
  • Далее нужно будет установить часовой пояс, к которому относится ваше место проживания. Сначала нажмите на соответствующую опцию.

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Затем вверху в строке поиска введите вашу страну, а далее город. На скриншоте ниже показан пример с установкой московского времени на гаджете.

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

  • Теперь можно настроить дату. Нажмите на пункт, указанный на скриншоте, и установите нужные значения. Здесь можно увидеть день недели, число и время.

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

Выше мы говорили, почему следует отключать опцию «Автоматически ». Это нужно сделать по следующим причинам:

  • Во-первых, в данном случае время берётся из Интернета и соответствует часовому поясу той или иной страны. Дело в том, что многие страны могут переводить часы на час вперёд или на час назад, когда происходит переход, например, с зимнего времени на летнее и обратно. По этой причине на вашем гаджете время может сбиваться и спешить/отставать на один час.
  • Во-вторых, время может сбиваться, например, если вы находитесь в туристической поездке. В дороге вы можете переноситься с одного часового пояса в другой, что сбивает гаджет с толку.
  • В-третьих, ваш гаджет будет потреблять немного больше ресурсов аккумулятора

По какой причине сбивается дата на Айфонах и гаджетах под управлением «IOS»?

Иногда бывает так, что у пользователя на гаджете установлен совершенно не тот год, в котором он живёт:

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

Это происходит из-за того, что в настройках Айфона установлен совсем не тот календарь, которым пользуются в вашей стране. Стандартным календарём для большинства стран является Грегорианский . Но на вашем телефоне может быть установлен какой-нибудь арабский. Чтобы всё исправить зайдите в основные настройки и нажмите на «Язык и текст »:

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

По какой причине сбивается время и дата на телефонах, планшетах, Айфонах, «IOS», «Android»

Видео: Как настроить дату и время на смартфоне?

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Загрузка...