Что я пытаюсь сделать
В настоящее время я создаю приложение, используя flutter , и я нахожусь на перепутье. Я использую приложение Google Maps на своем iPhone, и оно автоматически переключается на Ночной режим в какое-то время вечером. Проблема в том, что я понятия не имею, какой метод используется для определения этого времени.
Как я думал об этом
Я подумал о нескольких вариантах определения того, когда Ночной режим должен активироваться, но все они кажутся неточными или частично ошибочными:
- Используйте геолокацию время заката и затем включите Ночной режим . Смотрите мою правку о сумеречном времени ниже.
- Хотя я думаю, что это обеспечивает большую точность, я заметил, что время немного смещено: см. Редактирование Data для сравнения времени.
- Используйте встроенные датчики / камеру на устройстве.
- Хотя это может работать, оно по своей сути некорректно, так как освещение меняется в зависимости от среды пользователя. Постоянное изменение темы между комнатами определенно будет раздражать пользователей.
- Я также не уверен, какие датчики встроены в каждое устройство. Я знаю, что у iPhone есть Датчик освещенности , но я не уверен, какие датчики есть у других устройств (в частности, у Android).
На данный момент мой лучший метод - использовать комбинацию обоих: на основе заката разработать какой-то алгоритм, который принимает время заката, и временной буфер , который использует встроенные датчики / камера, чтобы определить, когда окружающий свет падает за определенный предел. Если на устройстве нет датчика освещенности, я бы просто использовал время заката для геолокации пользователя.
Вопрос
Таким образом, мой вопрос остается в названии моего вопроса: Как Google Maps определяет , когда тема должна измениться на / с Ночной режим на устройстве?
Дополнительно (но не обязательно): флаттер использует какие-либо методы, чтобы помочь разработчикам легко выполнить эту задачу?
P.S. Я не уверен, какой тег применять для ночного режима / темной темы (или как его еще называют), поэтому дайте мне знать, если у вас есть какие-либо предложения (я не думаю, что необходимо создавать новый тег).
Редактирование
Время заката
Как предложил Херб Вулф в комментариях под моим вопросом, возможно, Google использует время заката для переключения тем. Я определенно могу добавить это к моей существующей логике, чтобы сделать ее более точной . См. Data edit ниже для получения дополнительной информации.
Данные
Мне сложно собирать эти данные, поэтому я буду медленно публиковать их здесь, когда у меня будет возможность. Время заката и сумерек ниже показано через Google (см. Источники ниже). Среднее значение - среднее время между закатом и закатом за этот день. Время темы собрано мной вручную.
Date Sunset Dusk Average Theme
May 5th, 2018 8:25PM 8:57PM 8:41PM 8:40PM
May 29th, 2018 8:50PM 9:25PM 9:07:30PM 9:06PM
Источники
- 5 мая 2018 г.
- 29 мая 2018 г.