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

Потребность в тепловых API

Устройство Android подвергается тепловому стрессу, когда количество выделяемого тепла превышает то, что оно может рассеять (от которого можно избавиться). Это приводит к перегреву поверхности устройства. Это также может вызвать дросселирование CPU / GPU и вызвать дрожание изображения, дрожание звука и другие побочные эффекты, которые в значительной степени зависят от устройства и его оборудования. В результате в Android Q были введены новые тепловые API-интерфейсы, позволяющие разработчикам приложений лучше реагировать на тепловые проблемы и решать их.

Понимание уровней термической жесткости

Вместо того, чтобы предоставлять фактические значения температуры устройства, которые не могут быть точными показателями того, испытывает ли устройство проблемы с перегревом, API-интерфейсы Android для термической обработки представили концепцию уровней термической серьезности, которые основаны на кодах состояния и определены в классе PowerManager. Ниже приведены примеры того, как можно отреагировать на каждый из них, чтобы поддерживать хорошее взаимодействие с пользователем.

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

Получение тепловых уведомлений

Для получения обновлений теплового статуса API-интерфейсы Android для теплового режима предоставляют следующие методы обратного вызова и опроса через класс PowerManager.

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

Обратите внимание, что эти API-интерфейсы для термической обработки были представлены в обновленном термическом HAL, Thermal HAL 2.0. Он передает тепловые сигналы в тепловую службу платформы Android, IThermalService, которая затем передает их своим клиентам, в том числе приложениям Android.

Тот факт, что тепловые API-интерфейсы зависят от Thermal HAL 2.0, означает, что не все устройства под управлением Android 10 или более поздней версии будут их поддерживать. На момент выпуска тепловые API-интерфейсы поддерживались на устройствах Pixel.

Тестирование тепловых уровней

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

STATUS представляет статус термической серьезности, это целое число от 0 (THERMAL_STATUS_NONE) до 6 (THERMAL_STATUS_SHUTDOWN).

Когда вы закончите тестирование, вы можете сбросить тепловое состояние до нормального значения, используя следующую команду.

Образец кода

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



Заключение

В итоге:

  • Температурные API-интерфейсы, представленные в Android Q, показывают серьезность теплового напряжения устройства.
  • Используйте getCurrentThermalStatus(), чтобы узнать тепловое состояние устройства.
  • Зарегистрируйте прослушиватель теплового состояния, чтобы постоянно получать обновления теплового состояния устройства, используя addThermalStatusListener().
  • Смоделируйте различные уровни теплового воздействия с помощью командной строки, чтобы проверить, как ваше приложение на них реагирует.

Хотите узнать больше о тепловых API Android? Ознакомьтесь с этими ресурсами:

Чтобы узнать больше об Android, подписывайтесь на меня, чтобы получать уведомления, когда я пишу новые сообщения, или давайте подключимся к Github и Twitter!