Personalcam.ru

Авто Аксессуары
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

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

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

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

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

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

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

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

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

Использует ли Android NTP для синхронизации времени?

Используют ли устройства Android протокол сетевого времени (NTP) для синхронизации времени?

В настройках моего устройства я вижу checkbox со следующим текстом «синхронизировать с сетью», но я не знаю, используют ли они NTP.

Читайте так же:
Как отрегулировать карбюратор мотоблока салют

Мне это нужно для моей бакалаврской диссертации, для которой я использую GPS. Для получения точного сигнала GPS приемник должен иметь точные часы.

Я нашел эту запись в блоге в интернете, но не уверен, что он говорит правду: ускорение NTP, блокировка GPS в Android

4 ответа

  • Как проверить, готов ли порт 123 к синхронизации времени?

Я собираюсь сделать синхронизацию времени для своего сервера. Попробовал portqry на сервер времени с приведенными ниже результатами: C:PortQryV2>portqry -n time server -e 123 -p оба Вызывается целевая система запроса: time server Попытка преобразовать адрес IP в имя. Не удалось разрешить IP.

Насколько точен NTP для синхронизации времени набора серверов? Я пишу сервис, который требует набора серверов (некоторые действуют как клиенты, некоторые как серверы), синхронизированных с детализацией второго уровня. Мне интересно, является ли NTP лучшей вещью для использования, или есть что-то.

Я знаю о Android ICS, что он использует пользовательскую службу под названием: NetworkTimeUpdateService . Эта служба также реализует синхронизацию времени NTP через NtpTrustedTime singleton.

В NtpTrustedTime сервер NTP по умолчанию запрашивается из источника системной строки Android:

Если в настройках системы установлен флажок автоматическая синхронизация времени и служба NITZ времени недоступна, то время будет синхронизировано с сервером NTP с com.android.internal.R.string.config_ntpServer .

Чтобы получить значение com.android.internal.R.string.config_ntpServer , вы можете использовать следующий метод:

я хотел спросить, использует ли Android устройства протокол сетевого времени (ntp) для синхронизации времени.

Для общей синхронизации времени устройства с возможностью телефонии, где поставщик беспроводной связи предоставляет информацию NITZ, будут использовать NITZ. Насколько я понимаю, NTP используется в других обстоятельствах: NITZ-бесплатные поставщики беспроводной связи, WiFi-только и т. Д.

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

У меня есть Samsung Galaxy Tab 2 7.0 с Android 4.1.1. По-видимому, он не синхронизируется с ntp. Я загрузил приложение, в котором говорится, что мой планшет отключен от ntp на 20 секунд, но он не может установить его, если я не укореню устройство.

Не точный ответ на ваш вопрос, но немного информации: если ваше устройство использует NTP в течение времени (например, если это планшет без возможностей 3G или GPS), сервер может быть настроен в /system/etc/gps.conf — очевидно, что этот файл можно редактировать только с корневым доступом, но он доступен для просмотра на некорневых устройствах.

Похожие вопросы:

Я где-то читал, что NTP основан на UDP, и нет никакой безопасности, построенной с помощью NTP связи, поэтому легко подделать ответы NTP. Это правда? Разве это не будет серьезной проблемой.

Читайте так же:
Регулировка клапанов двс ямз 7511

Я хочу синхронизировать время с NTP по JavaScript. Клиент может быть обычным ПК или смартфоном или планшетом. Соединение может быть WLAN или 3G и т. д. Я уже нашел эти вопросы и сайты как добраться.

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

Я собираюсь сделать синхронизацию времени для своего сервера. Попробовал portqry на сервер времени с приведенными ниже результатами: C:PortQryV2>portqry -n time server -e 123 -p оба Вызывается.

Насколько точен NTP для синхронизации времени набора серверов? Я пишу сервис, который требует набора серверов (некоторые действуют как клиенты, некоторые как серверы), синхронизированных с.

Я хотел бы синхронизировать два события между двумя (или более) проводными сетевыми машинами Linux. Могу ли я использовать NTP для этого? NTP, похоже, в основном сосредоточен на синхронизации с.

Я пытаюсь исправить некоторый временной дрейф, который мы наблюдаем на серверах out azure, упомянутых в этой статье . Кто-нибудь мог настроить сервер azure для синхронизации с сервером NTP за.

Мне пришлось собрать ntp пакетов из исходного кода и установить их все на некоторых хостах. После установки ntpdate 1.us.pool.ntp.org работает для синхронизации. Однако, когда я попытался сделать.

Как говорится в Теме: лучше ли когда-нибудь использовать алгоритм Berkeleys over NTP для синхронизации времени? Насколько я понимаю, NTP-это надежный современный алгоритм, который дает наилучшую.

У меня есть настройка raspberrypi для синхронизации времени с сервера NTP, так как на нем нет часов HW, однако это обновление происходит не сразу и занимает некоторое время (

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

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

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

Предыстория: Android является мобильной ОС, базирующейся на ядре Linux, он спокойно подключается к интернету и, конечно же, можно предположить, что синхронизация времени осуществляется с помощью NTP, однако, это не так. Исторически сложилось, что Android был предназначен для использования исключительно в мобильных телефонах (вспомните версию 1.6). При этом только к 3 мажорной версии он обзавёлся интерфейсом для планшетов и начали́сь другие подвижки к унификации интерфейса и начинки ОС. Однако даже версии 4.4 и Android L получают сигналы точного времени теми же методами, что их получала Nokia 3310 и другие, более ранние GSM/3GPP телефоны, т. е. от вышек сотовой связи при регистрации в сети (при подключении к вышке). При этом планшеты или другие устройства без модуля связи, в принципе не имеют возможности синхронизировать время автоматически.

Читайте так же:
Карбюратор солекс 2108 солекс устройство регулировка

К великому сожалению, чтобы научить Android синхронизировать время полностью автоматически с помощью NTP нам понадобиться root доступ ибо API для точной установки времени в Android ныне отсутствует.

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

Далее, необходимо установить приложение ClockSync, которое и будет выступать для нас альтернативой демону синхронизации времени с помощью NTP.

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

Убедившись, что всё работает, настроим автоматическую синхронизацию в программе ClockSync. Для повышения точности я рекомендую включить опции «Режим высокой точности» и «Только через WI-FI». Если с первой опцией всё понятно из описания в программе (см. скриншот ниже), то вторую опцию я рекомендую включить в первую очередь не из соображений экономии мобильного трафика, а из-за того, что мобильный интернет не способен гарантировать хоть сколько-нибудь стабильные задержки.

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

В связи с масштабными изменениями часовых поясов в РФ осенью этого года необходимо уже сейчас задуматься об актуализации информации о них на всех устройствах и если с поддерживаемыми настольными ОС проблем не возникает, то в Android даже самая свежая версия ОС содержит устаревшие данные. Для того чтобы в этом убедиться устанавливаем TimeZone Fixer и наблюдаем неприглядную картину.

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

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

Читайте так же:
Регулировка холостых оборотов 601 дизель

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

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

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

Синхронизация приложения и сервера

Всем привет. Пишу сервер для своего андроид приложения и возникло 2 вопроса по поводу синхронизации.

1. И так. Для примера представим что у меня на сервере (в БД) есть текстовая запись "Запись №1", и вот я с помощью приложения (при подключенном интернете) ее успешно обновил на сервере и локальной БД до "Запись №2". Пока есть интернет, то все ок. Но вот представим что у меня один аккаунт (user_id и его таблицы на сервере) используют одновременно планшет и смартфон. Также представим что у планшета и телефона в данный момент нет интернета и они пишут только в свою локальную БД, т.е на планшете запись меняем на "Запись №3", а на смартфоне "Запись №4".
Если сделать просто, то: смартфон подключился первым и обновил запись на сервере до "Запись №3", а потом планшет подключился и обновил до "Запись №4". Получается что обновления смартфона удалились. Как лучше поступать в таком случаи?? Есть идея возможности отката вручную к нужным настройкам, но пока не знаю как осуществить

2 вопрос. Как вообще лучше осуществлять синхронизацию, тоесть как клиент (приложение) будет знать что на сервере есть данные которых у него нет (имеется ввиду после подключения интернете)?? Добавлять к какдой таблице новое поле: дата последнего обновления и в самой аппе сохранять значение последней синхронизации (и если дата в записи позднее чем синхронизации, то обновить его в локальной БД приложения). Ну и стоить учитывать что гаджетов может быть несколько, т.е надо слушать клиенту сервер и серверу клиента. Может есть какие-то туториалы как лучше делать?

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

Всем спасибо, всем добра

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

Читайте так же:
Регулировка карбюратора на скутере холостой ход

Синхронизация данных приложения между устройствами
Здравствуйте! Необходимо осуществить синхронизацию данных приложения на разных устройствах.

Синхронизация приложения на разных устройствах
Всем привет! Подскажите пожалуйста ( если есть возможность дайте ссылку где почитать) я начиная.

Синхронизация клиента и сервера
1. Сервер генерирует число double. Например 3.25. 2. Сервер посылает клиенту сообщение о старте.

я может неправильно сформулировал.
суть: если интернет есть, то записывать в локальную и потом сразу отдавать серверу и там обновляться. Если интернета нет, то писать только в локальную БД, а при появлении интернета обращатся к серверу. Только как лучше "помечать" данные которые еще не отдавались серверу?
Ну и что можно сделать в такой ситуации: смартфон постоянно подключен к интернету и соответственно все его данные актуальны на сервере, но потом начали юзать планшет (у которого давно интернета не было, и соответственно имеет очень старые данные) и фактически стер свежие данные и залил свои старые. Можно сделать возможность отката вручную, но тут тоже вопрос: как отмечать записи, которые только обновились (так сказать временные) чтобы если что откатить эти изменения??

Добавлено через 1 минуту
ну а напрямую с БД работать не буду. Буду использовать Spring Data и Spring Web MVC

yuraha18, у каждой записи должен быть триггер того, что она отправлена на сервер и время ее обновления. Например, есть несколько полей, которые еще не отправились. В них значение триггера 0, вр.обн. — timestamp в момент создания/обновления. Вы блок записей с триггером 0 отправляете на сервер, вам приходит для каждой записи время ее записи в БД сервера (можно сделать массив из <PrimaryKey, Timestamp>) и у себя локально обновить для этих записей триггер и время. Это подтверждение для каждой транзакции. И если потом локально какая та строка обновилась, то сбрасывать это состояние триггера в 0, и время обновления, и опять же какой-то итерацией отправить все данные с 0 на сервер. На сервере вы сравниваете значение времени обновления прилетевших данных и своих данных. Все данные естественно приводить к единому часовому поясу.
Опять же, такое решение не учитывает возможности того, что несколько человек, отключенных от инета обновят одну и ту же запись, и потом при появлении инета отправят обновление на сервер. Тогда произойдет нехилая коллиция, ведь кому-то из них придут невалидные данные. Возможно тут стоит поиграться с хешем данных вместо timestamp.

Это решение в лоб, и скорей всего будет серьезная нагрузка на сервер. У меня лишь небольшие знания в области БД. Возможно вам стоит задать этот вопрос в других разделах форума, связанных с БД.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector