Согласно заявленному вопросу, мне нужно фактическое время. Например, в моем приложении я должен показать конкретное всплывающее окно всем пользователям в 8 утра по национальному времени. Приложение работает в определенной стране. Что делать, если время устройства неверно? Я могу получить время через API. Что делать, если устройство не имеет интеренет? Я думал о том, чтобы начать отслеживать время, когда у меня появился интернет. Например, если у меня есть интернет, я нажимаю API, чтобы получить время и сохранить это время, чтобы отслеживать его. Любой другой sloution?
Android получает фактическое время (когда интернет отключен и время устройства неверно)
Ответы (3)
Как насчет этого решения: GPS-время в Android?
Однако для этого потребуется GPS-приемник.
Вы не можете получить реальную метку времени, если время, установленное на устройстве, неверно.
Редактировать: - Есть только решение, которое я мог найти с помощью телефонного интернета: -
Вы можете дать время от времени публичного сервера. не забудьте добавить разрешение INTERNET в манифест.
String TIME_SERVER = "url";
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddres=InetAddres.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime();
Date time = new Date(returnTime);
Вам нужно будет использовать UTC. Если вам действительно это нужно, я бы попросил приложение вести учет времени в формате UTC в момент установки (вы знаете, что в это время у пользователя есть Интернет, поэтому вы можете воспользоваться этим), а затем приложение отслеживает этого UTC внутри страны.
Вы можете добавить секунды к UTC, когда они проходят, пока приложение открыто, а затем локализовать это время тривиально. Затем вы можете использовать время устройства, чтобы узнать, сколько времени прошло с момента последнего открытия приложения (вам нужно будет создавать временную метку каждый раз, когда приложение закрывается и открывается), преобразовать это время в секунды и добавить его в свои сохраненные приложения. УНИВЕРСАЛЬНОЕ ГЛОБАЛЬНОЕ ВРЕМЯ. Опять же, локализация этого времени — тривиальность. Я бы также проверял, есть ли у пользователя Интернет в любое время, когда он открывает приложение, и если у него есть Интернет, получайте правильный UTC и обновляйте свои внутренние обновления UTC.
Если вы можете получить разрешение на бесшумную работу и подсчет секунд в фоновом режиме, это станет еще проще, и вы сможете отправлять уведомления в режиме реального времени. Это не идеально, но я уверен, что это может сработать.