В этом документе описаны рекомендации по оптимизации энергопотребления в мобильном приложении для навигации, созданном с помощью Navigation SDK. В то же время в нем описываются компромиссы, которые следует учитывать при использовании этих практик. В частности, в этом документе рассматриваются следующие вопросы:
- Источники высокого энергопотребления, отсортированные по убыванию.
- Стратегии оптимизации энергопотребления в порядке важности, начиная с частоты кадров.
- Стратегии для конечных пользователей, которые помогут им научиться управлять использованием устройства во время навигации.
Зачем оптимизировать навигационное приложение?
В зависимости от ситуации пользователи могут долгое время использовать навигацию. Например, водители и курьеры могут работать много часов подряд, выполняя заказы на незнакомой территории. В таких случаях они полагаются на пошаговые инструкции в приложении. Это приводит к следующим проблемам:
- Расход заряда батареи и доступность зарядных станций. При активном использовании навигации батарея устройства может разряжаться быстрее, чем ожидалось. Многие пользователи могут решить эту проблему, заряжая устройство в автомобиле, но у водителей двухколесных транспортных средств такой возможности нет.
- Троттлинг из-за перегрева. Проблемы могут возникнуть даже у пользователей, которые постоянно заряжают устройство. Высокое энергопотребление в течение длительного времени может привести к нагреву устройства, что приведет к тепловому троттлингу и последующей потере производительности.
Приложения для пошаговой навигации используют энергоемкие функции, такие как экран, GPS и радиосвязь с вышками сотовой связи, поэтому рекомендуется оптимизировать энергопотребление мобильного приложения. Кроме того, следует учитывать потребности целевой аудитории в энергопотреблении, чтобы найти оптимальный баланс между производительностью и энергопотреблением.
Что потребляет больше всего энергии?
В этом разделе действия в приложении, связанные с высоким энергопотреблением, делятся на две категории:
- Отрисовка экрана
- Попутчики
Отрисовка экрана
Отрисовка экрана обычно приводит к наибольшему энергопотреблению в мобильных навигационных приложениях. Каждый раз, когда устройство рисует карту и другие элементы интерфейса на экране, оно полагается на обработку графического процессора и ЦП. Аналогично, когда пользователь оставляет этот экран включенным на длительное время, это также потребляет больше энергии.
В некоторой степени высокое энергопотребление ожидаемо для водителей и пассажиров, которые полагаются на видимую карту для навигации, особенно если они используют приложение непрерывно в течение многих часов. В этом случае приложение также выполняет рендеринг на экране с более высокой частотой, поскольку карта обновляется в реальном времени. В некоторых случаях экран может перерисовываться почти непрерывно, особенно когда пользователь едет из одного места в другое без остановки.
Попутчики
Помимо отрисовки экрана, навигация использует заряд батареи для выполнения двух других действий:
- Использование вышек сотовой связи и GPS
- Обновление и передача данных о местоположении, например для расчета времени прибытия или отслеживания транспортных средств в автопарке.
GPS и сотовая радиосвязь полагаются на энергоемкие операции запуска: GPS должен находить спутники, а сотовые приемопередатчики должны вести переговоры с вышками и устанавливать соединение. По этим причинам они работают практически непрерывно во время навигации, хотя приемопередатчики остаются активными в течение 20–30 секунд, чтобы минимизировать затраты на запуск. Операционная система управляет этими настройками, которые вы не можете легко настроить в своем приложении.
Энергопотребление при обновлении местоположения зависит от непредсказуемых факторов. Например, энергопотребление зависит от расстояния между устройством и базовой станцией сотовой связи, поскольку устройство будет использовать минимальный сигнал, необходимый для продолжения навигации, чтобы избежать переключения вышек. Поэтому устройство, которое находится в зоне со слабым сигналом, будет потреблять больше энергии, чем устройство, которое находится рядом с базовой станцией. Кроме того, некоторые приложения могут передавать данные о местоположении в центральную службу управления автопарком, и для этого им потребуется связь с сервером.
Оптимизируйте энергопотребление приложения
Сложность оптимизации энергопотребления в навигационных приложениях заключается в том, что они сильно зависят от энергоемких ресурсов. Это ограничивает возможности снижения энергопотребления без компромиссов, таких как ограничение использования экрана. В этом разделе перечислены подходы к оптимизации приложения в порядке убывания их эффективности.
Как изменить частоту кадров
Частота, с которой обновляется изображение на экране, называется частотой кадров и обычно измеряется в кадрах в секунду (FPS). Поскольку рендеринг экрана требует значительных ресурсов ЦП и графического процессора, вы можете снизить частоту кадров, чтобы сэкономить заряд батареи.
При снижении частоты кадров отрисовка карты и интерактивные жесты (например, панорамирование, масштабирование или поворот) могут выглядеть менее плавными. Чтобы сбалансировать энергоэффективность и удобство для пользователей, вы можете поддерживать низкую базовую частоту кадров и динамически повышать ее во время активного взаимодействия с пользователем.
Чтобы узнать больше об изменении частоты кадров, ознакомьтесь с разделом Частота кадров в документации для разработчиков в Android Media Dev Center.
Автоматическая настройка частоты кадров
Начиная с версии 7.8.0 Navigation SDK автоматически регулирует частоту кадров карты во время активной навигации, чтобы повысить производительность и снизить расход заряда батареи. Когда устройство переходит в режим энергосбережения, частота кадров карты падает до 10 кадров/с и сбрасывается до 60 кадров/с, когда навигация заканчивается или режим энергосбережения отключается.
Навигация без карты
Вы не можете контролировать, какую яркость экрана устанавливает конечный пользователь и как долго он держит экран включенным, но можете предоставить ему возможность навигации без карты. Это позволит конечному пользователю выбрать этот вариант для экономии энергии. Например, если водители регулярно работают в одном и том же районе, им может не требоваться частое использование карты. Чтобы включить навигацию без карты, задайте пункт назначения и запустите ведение по маршруту в Navigation SDK, но не показывайте карту.
Чтобы скрыть интерфейс навигации, не добавляйте NavigationView или SupportNavigationFragment. Если вы уже добавили их, удалите соответствующий код. В приведенном ниже фрагменте кода из демоверсии приложения для Android с Navigation SDK показано, как с помощью комментариев удалить код, добавляющий интерфейс навигации.
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Navigation SDK продолжит обновлять привязанные к дороге местоположения, расчетное время прибытия и оставшееся расстояние, а ваше приложение сможет подписываться на все события, генерируемые SDK по мере движения водителя. Это не всегда уместно и не подходит, если водителю нужно видеть карту и следовать визуальным подсказкам. На скриншотах ниже показано параллельное сравнение видов карты при переключении в режиме навигации.
|
|
Используйте темный стиль карты
Чтобы снизить энергопотребление при отрисовке карты на экране, используйте тёмную тему.
Navigation SDK отрисовывает карты с помощью Google Maps SDK для Android, в котором есть параметры для настройки стиля любых представлений карты, не связанных с навигацией. Представление навигации также поддерживает принудительное включение тёмной темы. Это может по-разному влиять на устройства из-за различий в типах экранов, но в некоторых случаях позволяет экономить заряд батареи. Недавнее исследование показало, что количество энергии, которое экономится при использовании тёмной темы на некоторых экранах, зависит от того, насколько ярким был экран изначально. Например, тёмная тема экономит больше энергии на экранах с полной яркостью, чем на экранах, яркость которых уже настроена на 30–50% от максимальной. Это важно учитывать при использовании тёмного режима для ваших приложений, поскольку экономия энергии будет зависеть от того, как конечный пользователь устанавливает яркость экрана.
Подробнее о том, как изменить интерфейс навигации…
Чтобы создать темный стиль для карты, используйте объект MapStyleOptions со стилем JSON, который представляет выбранный вами темный стиль карты. Устаревшие стили JSON можно создавать с помощью устаревшего редактора стилей на странице https://mapstyle.withgoogle.com/.
Как изменить частоту обновления местоположения по GPS
При оценке энергопотребления, связанного с отправкой уведомлений о местоположении с устройства, обращайте больше внимания на частоту уведомлений, а не на объем передаваемых данных.
Вы не можете напрямую управлять этим в Navigation SDK, но если ваше приложение для Android запрашивает данные о местоположении независимо, следуйте советам из статьи Оптимизация использования батареи при определении местоположения в документации для разработчиков Android. Те же рекомендации относятся к использованию источников местоположения, не связанных с GPS (мобильная связь и Wi-Fi).
Обучающие материалы для пользователей
Пользователи вашего приложения могут захотеть узнать, как оптимизировать энергопотребление. Чтобы снизить энергопотребление приложений, посоветуйте пользователям сделать следующее:
- Заблокируйте телефон.
- Переведите приложение для навигации в фоновый режим.
- По возможности используйте навигацию без карты
- Уменьшите яркость экрана, включив тёмную тему (для экранов OLED и AMOLED) или адаптивную яркость.
- Не допускайте перегрева устройства
- Подключитесь к Wi-Fi в автомобиле, если он доступен.
Измерение энергопотребления
Для измерения энергопотребления можно использовать профессиональные инструменты, но их часто трудно или дорого получить. Приложения и инструменты профилирования IDE, такие как Power Profiler в Android Studio и панель Battery Usage в XCode Organizer, измеряют энергопотребление, но при этом может быть сложно исключить влияние фоновых процессов или установить базовый уровень производительности для сравнения. В некоторых случаях ограничения на устройстве могут препятствовать получению доступа к необходимым данным.
Вы можете использовать специальное оборудование для мониторинга энергопотребления и изменить конфигурацию подключения батареи. Для этого существуют коммерческие продукты и услуги. Обратите внимание, что в этом случае гарантия на устройство может быть аннулирована.