Android Q представил новые тепловые API-интерфейсы, позволяющие лучше справляться с тепловыми проблемами. В этой статье рассказывается, зачем нужны эти API-интерфейсы, какую информацию и элементы управления они предоставляют, а также как вы можете протестировать свое приложение при различных уровнях термической нагрузки.
Потребность в тепловых API
Устройство Android подвергается тепловому стрессу, когда количество выделяемого тепла превышает то, что оно может рассеять (от которого можно избавиться). Это приводит к перегреву поверхности устройства. Это также может вызвать дросселирование CPU / GPU и вызвать дрожание изображения, дрожание звука и другие побочные эффекты, которые в значительной степени зависят от устройства и его оборудования. В результате в Android Q были введены новые тепловые API-интерфейсы, позволяющие разработчикам приложений лучше реагировать на тепловые проблемы и решать их.
Понимание уровней термической жесткости
Вместо того, чтобы предоставлять фактические значения температуры устройства, которые не могут быть точными показателями того, испытывает ли устройство проблемы с перегревом, API-интерфейсы Android для термической обработки представили концепцию уровней термической серьезности, которые основаны на кодах состояния и определены в классе PowerManager
. Ниже приведены примеры того, как можно отреагировать на каждый из них, чтобы поддерживать хорошее взаимодействие с пользователем.
По мере увеличения уровня теплового воздействия приложение должно отключать дополнительные энергопотребляющие функции, такие как уменьшение разрешения / скорости передачи данных в приложении для потоковой передачи видео, отключение функций интенсивного улучшения изображения в приложении камеры и отключение GPS в приложении карт. . Это поможет снизить энергопотребление и потенциально вернет устройство к нормальной температуре.
Получение тепловых уведомлений
Для получения обновлений теплового статуса API-интерфейсы Android для теплового режима предоставляют следующие методы обратного вызова и опроса через класс PowerManager
.
getCurrentThermalStatus()
возвращает текущее тепловое состояние устройства.addThermalStatusListener()
добавляет слушателя, который уведомляется об изменениях теплового статуса.removeThermalStatusListener()
удаляет ранее добавленного слушателя.
Приложение может зарегистрировать прослушиватель теплового состояния после его возобновления и отменить регистрацию, когда он приостановлен. Это позволит ему получать обновления, пока они находятся на переднем плане.
Обратите внимание, что эти 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!