- Синхронизация времени на Android через TimeServer
- О синхронизации времени
- Синхронизация времени с TimeServer на Android
- Не синхронизируется время андроид
- Как настроить дату и время на Android
- Устанавливаем параметры времени
- Почему сбивается время на Андроид
- Заключение
- Устранение проблем с автоматической синхронизацией времени в Android
Синхронизация времени на Android через TimeServer
Знание точного времени очень важно в современном мире, в котором все может поменяться буквально за считанные минуты. А для решения некоторых задач могут отводиться и вовсе несколько секунд. К счастью, определение точного времени в любой точке земного шара — несложная задача. Достаточно лишь иметь под рукой любое устройство с выходом в интернет. Рассмотрим, как определить точное время на смартфонах и планшетах, работающих под управлением операционной системы Android.
О синхронизации времени
Существуют различные способы определения точного времени. Для обычных людей наиболее удобным и простым способом является использование серверов синхронизации времени (NTP-сервер). Большинство операционных систем, устанавливающихся на компьютеры и мобильные устройства, имеют встроенную функцию для работы с такими NTP-серверами. Алгоритм синхронизации внутренних часов устройства со временем на удаленном сервере достаточно прост:
- Пользовательское устройство посылает запрос на сервер синхронизации запрос, для чего используется специальный сетевой протокол — NTP (Network Time Protocol).
- В ответ на запрос сервер формирует NTP-пакет с нужными данными и отправляет его обратно на пользовательское устройство.
- Встроенная функция синхронизации обрабатывает пакет и настраивает внутренние часы устройства, используя данные из NTP-пакета.
- Высокая точность синхронизации (вплоть до одной сотой секунды, т.е. 10 миллисекунд) достигается благодаря тому, что функция установки времени учитывает задержку между и отправкой запроса и получение от сервера NTP-пакета.
Сам же NTP-сервер определяет точное время по реально (физически) существующему эталону времени. Это целый комплекс оборудования, в задачу которого входит отчет времени. В мире существует несколько эталонов времени, расположенных в технологически развитых странах, включая Россию. Атомные часы имеются в распоряжении «Всероссийского научно-исследовательского института физико-технических и радиотехнических измерений» (ВНИИФТРИ).
Синхронизация времени с TimeServer на Android
В операционных системах Android также имеется встроенная функция синхронизация времени по сети. Однако пользователи не могут ее настраивать. Т.е. система сверяет время с NTP-сервером, который, по сути, неизвестен владельцу Андроид-устройства. Также остается секретом и то, насколько точно работает базовая функция синхронизации часов в Android.
Для возможности синхронизации времени на смартфонах и планшетах под управлением Андроид существует только один выход — использование специальных приложений. Но и здесь есть свои нюансы. ОС Android запрещает сторонним приложениям изменять настройки даты и времени, что сделано в целях безопасности. Для полноценной работы приложений синхронизации времени требуется root-права. Без root-прав такие программы не могут изменять системные настройки в автоматическом режиме, однако определять точное время они все же в состоянии. В этом случае пользователю придется время от времени устанавливать время на своем Android-устройстве вручную.
Источник
Не синхронизируется время андроид
Для автоматической синхронизации времени необходимы права 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
Купив новый мобильный гаджет, пользователи могут столкнуться с проблемой неправильно заданных часовых поясов, текущей даты и времени. Решить ее, впрочем, можно достаточно просто, и в этом руководстве мы расскажем, как настроить дату и время на смартфоне под управлением Андроид.
Устанавливаем параметры времени
Чтобы установить время на андроиде, нужно выполнить несколько простых действий:
Шаг 1. Запустите Настройки, пройдите в категорию «Система и устройство» и выберите раздел «Дополнительно».
Шаг 2. Нажмите кнопку «Дата и время».
Шаг 3. В открывшемся окне вы сможете выставить время, поменять дату, выбрать формат отображения времени и даты, установить часовой пояс, а также задать автоматическое получение настроек.
Обратите внимание: параметры даты и времени могут быть скрыты в других подразделах, например, в расширенных настройках. Это зависит от версии Android.
Перейти к параметрам даты и времени можно и другим путем – через приложение Часы:
Шаг 1. Запустите приложение Часы.
Шаг 2. Нажмите кнопку параметров.
Шаг 3. Нажмите на кнопку «Настройки даты и времени».
Почему сбивается время на Андроид
Синхронизация даты и времени на смартфонах Android иногда может работать некорректно, из-за чего происходит сбой настроек. Чтобы исправить эту проблему, необходимо отключить параметры «Дата и время сети» и «Часовой пояс сети», после чего задать настройки вручную.
Если вопрос не решится, стоит выполнить сброс Android до заводских настроек и заново установить все параметры.
Заключение
Следуя рекомендациям из этого руководства, вы всегда будете знать точное время и дату на вашем гаджете.
Источник
Устранение проблем с автоматической синхронизацией времени в Android
Прочитав статью «Переезд временной зоны MSD в MSK — новый Y2K локального масштаба» — вспомнил, что вместе с коллегой по работе уже давно решил эту проблему на 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 следующей командой:
Не стану описывать все подробности работы 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 поместили обратно в телефон:
Этим мы добились того что в списке ручного выбора временной зоны появился Novosibirsk.
Наш город появился в списке, но определение временной зоны в автоматическом режиме по-прежнему работало неверно. Для этого мы пошли дальше и выяснили что, настройки временных зон для городов хранятся в базе данных, а именно в файле /system/etc/WPDB.zip.
Достав его из телефона с помощью всё того же adb, мы извлекли из него две базы
- WP_0409WWE.db
- WP_0419RUS.db
для английского и русского языков соответственно. Посмотрев на данные, мы обнаружили, что для нашего города, временная зона прописана как Asia/Almaty, пришлось поправить и этот момент, для этого в базах поменяли timezoneId на Asia/Novosibirsk (использовали Lita в качестве редактора SQLite database):
Кроме того, еще в одну базу добавили запись о нашем городе, а именно в /system/etc/timezones.db
Добавили запись, timezoneId: Asia/Novosibirsk, остальные поля Novosibirsk, ru – Новосибирск.
Для того чтобы все сделанные изменения вступили в силу, сбросили кэш для приложений
Clock, Settings и Weather Provider. Ну и для полной уверенности перезапустили телефон.
Итоги
В результате получили вот такие пироги:
Как мы видим, в автоматическом режиме зона определяется корректно, системное время и время на виджете одинаковое, ну и в ручном режиме все в порядке.
Ввязавшись в войну со временем, мы решили идти до конца. А именно решить и проблему отмены перехода на зимнее/летнее время.
Скачали самую свежую tzdata (aka timeinfo.dat) с, тогда еще доступного, ресурса elsie.nci.nih.gov/pub
Обнаружили, что в ней про нас еще не подумали, поправили, подготовили и залили в телефон. На момент написания статьи, данная база уже содержит правильные настройки для нашей необъятной страны, а как решать эту проблему, замечательно описано в статье «Обновление временных зон на Android»
В заключение, привожу список средств, которые мы использовали:
- APK Manager
- Lita
- Android SDK
Надеюсь, мы не зря потратили время, и эта информация окажется кому-нибудь полезной.
П.С. уже после публикации случайно обнаружил статью описывающую добавление нового города HTC Sense и виджет погоды — добавляем свой город слегка пересекающуюся с данной.
Источник