Синхронизация времени через gps для андроид

Синхронизация времени на Android через TimeServer

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

О синхронизации времени

Существуют различные способы определения точного времени. Для обычных людей наиболее удобным и простым способом является использование серверов синхронизации времени (NTP-сервер). Большинство операционных систем, устанавливающихся на компьютеры и мобильные устройства, имеют встроенную функцию для работы с такими NTP-серверами. Алгоритм синхронизации внутренних часов устройства со временем на удаленном сервере достаточно прост:

  • Пользовательское устройство посылает запрос на сервер синхронизации запрос, для чего используется специальный сетевой протокол — NTP (Network Time Protocol).
  • В ответ на запрос сервер формирует NTP-пакет с нужными данными и отправляет его обратно на пользовательское устройство.
  • Встроенная функция синхронизации обрабатывает пакет и настраивает внутренние часы устройства, используя данные из NTP-пакета.
  • Высокая точность синхронизации (вплоть до одной сотой секунды, т.е. 10 миллисекунд) достигается благодаря тому, что функция установки времени учитывает задержку между и отправкой запроса и получение от сервера NTP-пакета.

Сам же NTP-сервер определяет точное время по реально (физически) существующему эталону времени. Это целый комплекс оборудования, в задачу которого входит отчет времени. В мире существует несколько эталонов времени, расположенных в технологически развитых странах, включая Россию. Атомные часы имеются в распоряжении «Всероссийского научно-исследовательского института физико-технических и радиотехнических измерений» (ВНИИФТРИ).

Синхронизация времени с TimeServer на Android

В операционных системах Android также имеется встроенная функция синхронизация времени по сети. Однако пользователи не могут ее настраивать. Т.е. система сверяет время с NTP-сервером, который, по сути, неизвестен владельцу Андроид-устройства. Также остается секретом и то, насколько точно работает базовая функция синхронизации часов в Android.

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

Источник

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

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

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

Читайте также:  Kingdoms and lord 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 нужен дополнительный патчинг, пока вопрос находится на стадии исследования возможностей для создания юзер-френдли решения.

Читайте также:  Android ошибка подключение отсутствует

Источник

DarkNess

Личный блог DarkNess. Только технические темы.

пятница, июля 12, 2013

Точная синхронизация времени на Android для ускореня холодного старта GPS, ну и просто точное время

Этого вопроса я уже касался ранее, в заметке Android калибровка GPS, ускорение захвата спутников после холодного старта, повышение точности GPS по сути до возможного предела «железа». Повторюсь коротко. Методы, которые использует Android для синхронизации времени, или очень неточны (по сети оператора — в лучшем случае ошибка будет несколько секунд, что даст замедление старта GPS в 2-3 раза), или малоприемлемы — по GPS спутникам, это колоссальный расход энергии, да и не будет работать нигде, кроме как на улице. Первым вариантом решения вопроса была программа ClockSync (см пункт 1 заметки, ссылка на которую выше). Но можно получить еще более высокую точность, и обойтись без установки дополнительных программ, если у Вас рутованный телефон и на нем установлена BusyBox.

Решением проблемы станет «родной» линуховый ntpd. К сожалению в BusyBox входит очень упрощенный его вариант (родной линуховый позволил бы обеспечить точность в десятки миллисекунд в сутки даже когда нет возможности сделать синхронизацию по сети, за счет «коррекции дрифта»), так что будем использовать что есть.

Запускаем root explorer. Заходим с его помощью в каталог /system/etc/init.d (если у Вас init.d каталог еще не создан — создайте, и не забудьте нажать кнопочку справа сверху, разрешающую запись — иначе ничего не выйдет).
Создаем новый файл, и называем его 07userini.
Меняем его разрешения, через меню root explorer, вызываемое «по долгому клику» на файл (по короткому будет вызвано другое — оно нам не нужно). Ставим галочки «чтение» для всех, «запись» оставляем только для владельца, и «выполнение» тоже для всех.
Снова по длинному клику вызываем меню, и выбираем «Открыть в текстовом редакторе».
Теперь вписываем само содержание файла запуска:
———-
#!/system/bin/sh
/system/bin/logwrapper /system/bin/ntpd -N -p 92.249.120.2 -p 78.152.160.1

Жмем кнопку меню, потом «Записать и выйти».
Удалите образовавшийся файл с тем же именем, но с расширением .bak

Теперь можно проверить что все сделали правильно. (а если уверены что все сделали правильно — можете не проверять). Для проверки нам понадобится терминал. Запускаем его, заходим в каталог cd /etc/system/init.d, запускаем комманду ./07userini
Она должна отработать, не выдав никаких сообщений об ошибках.
Теперь набираем комманду «ps | grep ntp», enter.
В ответ должны увидеть строку, в конце которой будет: /system/xbin/ntpd

Все готово — можно перезагружаться.

Да, с ядром ThunderZap, после перезагрузки, может возникнуть завис. Подождите минутки 3, если само не уйдет в повторную перезагрузку — выньте батарею, и снова включите. Оно снова запустится, потом подумает с минуту, перезагрузится. После этого все точно готово. Указанные приколы с «зависом» — особенности ThunderZap с включенным SWAPом, могут возникать после любого редактирования системных параметров и перезагрузки, и не имеют никакого отношения к данному конкретному вопросу.

*Предложенный метод запуска подходит только если у Вас «кастомное» ядро, поддерживающее init.d. Если у Вас стоковое — найдите на Маркете какое нить приложение, которое запускает произвольные программы после старта системы, и используйте его для запуска демона.

PS Циферки в конце комманды, после комманды -p, в моем случае -p 92.249.120.2 -p 78.152.160.1 — это IP адреса ближайших NTP серверов. Можно вписать пул, чтобы система сама выбирала, но тогда точность упадет. Как выбрать подходящий конкретно для Вашей страны и региона NTP сервер, я описал ранее в заметке http://vyacheslav.blogspot.com/2013/07/android-gps-gps.html#more, см П1. Те что использовал я, дают наилучший результат для Киева.

PPS Эта программа займет в памяти гдето 150 килобайт, или 0,15 мегабайта. Для сравнения, типичная программа «Android» зангимает от 10ти мегабайт и выше. Так что этим можно вообще пренебречь. Время когда проверять, программа выбирает автоматически, исходя из статистики предидущих коррекций, и вычисляя какой уход часов конкретно у Вашего аппарата, и исходя из этого меняя частоту синхронизации. Паеты махонькие, так что трафика будет брать совсем немного.

Читайте также:  Service android return result

PPPS Впечатление от работы ntpd. очень положительные. Если ранее, при использовании ClockSync, я изредка, обнаруживал что расхождение достигает 250 миллисекунд, и это через 20 минут после проведенной ClockSync синхронизации, то сейчас количество таких «казусов» снизилось раз в 10. Плюс отсутствие периодического запуска «нативной Андроидной» ClockSync, «кушающей» мегабайты памяти.

Источник

Приложение для синхронизации времени на Андроид

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

Поэтому, в сегодняшней статье мы будем учиться приходить вовремя на важные мероприятия, а поможет нам в этом приложение ClockSync.

Приложение для синхронизации времени на Android: Видео

Установка приложения ClockSync

Разработчики позиционируют свой продукт как программу совершенно бесплатную, но требующую для полноценной работы ROOT-доступ. ClockSync доступна для загрузки по адресу .

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

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

Синхронизация устройств на системе Android с ПК: Видео

Настройка приложения ClockSync

Итак, давайте запустим программу и проверим отклонение текущего времени на мобильном устройстве от времени на серверах синхронизации.

Как видите, отклонение есть, пусть и небольшое. Разница во времени указана в строке “Смещение”. Следовательно, часы гаджета надо немного подстроить. Но перед этим предлагаем вам ознакомиться с теми возможностями, которые предлагают нам разработчики ClockSync. С помощью контекстного меню открываем настройки приложения.

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

Разработчики учли предыдущие пожелания интернет-сообщества и снабдили ClockSync возможностями записи выполненных операций – вы в любой момент можете просмотреть журнал работы программы в пункте “История и статистика”.

Двигаемся далее. Опция “Определять часовой пояс”. Это может пригодиться тем из вас, кто много путешествует. Зачем тратить личное время на корректировку часов при перелете из одной страны в другую? Пусть этим занимается “сообразительный” гаджет!

Как мы отмечали уже в начале статьи, ClockSync настоятельно просит у пользователя root-доступ, но приложение вполне неплохо справляется со своими обязанностями и без него. Достаточно лишь указать необходимый режим работы в настройках программы.

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

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

В виду того, что наше устройство “рутировано”, приложение запросит разрешение на получение неограниченного доступа к системным функциям. Разрешаем.

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

На этом все. Смеем надеяться, что мы сумели убедить вас, что для операционной системы Android синхронизация времени – это процесс несложный и очень необходимый.

Программа для синхронизации на Android: Видео

Как получить ROOT права: Видео

Источник

Оцените статью