Android 13 включает android.hardware.health
AIDL HAL — преобразование HAL health@2.1. Этот новый HAL имеет следующие преимущества:
- Удалите неиспользуемые API, связанные с зарядным устройством.
- Удалите неиспользуемый
StorageAttribute
и связанные поля. - Поддержка док-зарядки.
Android 11 включает android.hardware.health
HAL 2.1, небольшое обновление версии health@2.0 HAL. Этот новый HAL имеет следующие преимущества:
- Более четкое разделение между фреймворком и кодом поставщика.
- Большая степень свободы для настройки поставщиков в отчетах о состоянии здоровья.
- Больше информации о состоянии устройства, чем просто аккумулятор.
Документация по реализации Health 2.1 HAL находится на этой странице в качестве справки.
Требования
В этом разделе приведены требования для Android 11, 12 и 13 или более поздних версий.
Устройства под управлением Android 11 и Android 12
Устройства, запускаемые под управлением Android 11 и 12, должны иметь HAL 2.1 или AIDL HAL. Устройства, которые не запускаются с Android 11 или 12, но планируют обновить образ поставщика до версии матрицы совместимости Target Framework 5 (выпущенной в Android 11) или 6 (выпущенной в Android 12), должны удалить существующие реализации HAL 2.0 и предоставить HAL 2.1 или AIDL HAL. Устройствам, которые не запускаются с Android 11 и не планируют обновлять образ поставщика, также рекомендуется предоставить HAL 2.1 или AIDL.
AOSP включает в себя несколько вспомогательных библиотек, призванных помочь вам реализовать HAL 2.1 и перейти от старых HIDL HAL.
Устройства под управлением Android 13 и выше
Устройства, запускаемые с Android 13, должны предоставлять AIDL HAL (и не должны предоставлять HIDL HAL). Устройства, которые не запускаются с Android 13, но планируют обновить образ поставщика до версии 7 матрицы совместимости Target Framework (выпущенной в Android 13), должны удалить существующие реализации HIDL HAL и предоставить AIDL HAL. Устройствам, которые не запускаются с Android 13 и не планируют обновлять образ поставщика, также рекомендуется предоставить AIDL HAL.
AOSP включает в себя несколько вспомогательных библиотек, призванных помочь вам реализовать AIDL HAL и перейти от старых HIDL HAL.
Терминология
Ниже приведены термины, которые вам следует знать, прежде чем читать остальную часть документации по работоспособности системы Android:
- здоровье@2.1
- Аббревиатура
android.hardware.health@2.1
. Версия 1 HIDL для здоровья была выпущена в Android 11. - здоровье AIDL HAL
- Аббревиатура
android.hardware.health
. Версия 1 Health AIDL HAL была выпущена в Android 13. - зарядное устройство
- Исполняемый файл, работающий в выключенном режиме зарядки, отображающий анимацию зарядки телефона.
- восстановление
- Исполняемый файл, работающий в режиме восстановления, должен получить информацию о батарее.
- хранится
- Демон, который получает информацию о хранилище и предоставляет ее платформе.
Здоровье в Android 11 и 12
В Android 11 и 12 компонент работоспособности работает, как показано на следующей схеме:
[system]
| getService()
V
[health@2.1-service]
| getService(stub=true)
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
Для других режимов:
[ charger ]
| getService() | (legacy code path)
V +-------------------------------------------------+
[health@2.1-service] |
| getService(stub=true) |
V |
[ health@2.0-impl-2.1-<device>.so ] |
| | (device-dependent linkage) |
V V |
+---------Helper libs for impl--------+ [libhealthd.device] |
| [libhealthloop (uevent, wakealarm)] | |
| [libhealth2impl (IHealth impl) ] | <---------------------------------+
| [libbatterymonitor (battery) ] |
+-------------------------------------+
[recovery]
| getService() w/o hwservicemanager
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
См. следующую упрощенную схему для различных режимов:
Рис. 1. Инфраструктура Health HIDL HAL 2.1.
Здоровье в Android 13
В Android 13 представлен AIDL HAL для здоровья. На рисунке 2 показано, как работает компонент здоровья:
Рисунок 2. Инфраструктура Health AIDL HAL.
HIDL-HAL-интерфейс 2.1
Health@2.1 HAL поддерживает зарядку в выключенном состоянии и предоставляет дополнительную информацию о батарее.
Основной интерфейс IHealth предоставляет следующие дополнительные функции:
-
getHealthConfig
: для получения конфигурации этого HAL -
getHealthInfo_2_1
: незначительное обновление версииgetHealthInfo
-
shouldKeepScreenOn
: чтобы определить, должен ли экран оставаться включенным в режиме зарядного устройства.
Кроме того, реализация @2.1::IHealth
необходима для поддержки @2.1::IHealthInfoCallback
для унаследованных функций registerCallback
и unregisterCallback
. Новый интерфейс обратного вызова возвращает клиенту информацию о состоянии здоровья, используя функцию healthInfoChanged_2_1
вместо унаследованной функции healthInfoChanged
.
Новая структура @2.1::HealthInfo
возвращается с помощью обратных вызовов и getHealthInfo_2_1
. Эта структура содержит дополнительную информацию о состоянии устройства, доступную через health@2.0 HAL, в том числе:
- Уровень емкости аккумулятора
- Время полной зарядки аккумулятора (в секундах)
- Расчетная емкость полной зарядки аккумулятора (мкАч)
На рис. 3 показана UML-диаграмма классов, полезных для реализации HAL:
Рисунок 3. UML-диаграмма Health HAL 2.1.
Сведения о реализации службы Health 2.1 см. в разделе «Реализация Health 2.1» .
Интерфейс AIDL HAL версии 1
В этом разделе содержится информация об интерфейсе AIDL HAL версии 1.
Изменения API
HAL AIDL версии 1 поддерживает API, аналогичные HAL HIDL 2.1. По сравнению с интерфейсом HIDL 2.1 в API изменено следующее:
- API-интерфейсы, связанные с зарядными устройствами, представленные в HIDL HAL 2.1, не перенесены в AIDL HAL. Поскольку функция зарядки в выключенном режиме существует только в разделе
/vendor
, API в интерфейсе поставщика не требуются. Чтобы правильно реализовать зарядку в выключенном режиме, см. зарядное устройство . - Тип
StorageAttribute
и связанные поля удаляются, поскольку они не используются. -
chargerDockOnline
добавлен вHealthInfo
для поддержки зарядки от док-станции.
Выполнение
На рис. 4 показана UML-диаграмма классов, полезных для реализации AIDL HAL:
Рисунок 4. UML-диаграмма Health AIDL HAL.
Информацию о реализации службы Health AIDL см. в разделе «Реализация Health AIDL HAL» .
Восстановление
Android 13 поддерживает связывание в восстановлении. Установка службы Health AIDL для восстановления позволяет ей работать в режиме восстановления.
Информацию об установке службы AIDL для восстановления работоспособности см. в следующих разделах:
Зарядное устройство
Функциональность зарядки в выключенном режиме перенесена из /system
в /vendor
. Для устройств, запускаемых с Android 13, если они поддерживают зарядку в выключенном режиме, двоичный файл службы HAL должен поддерживать режим зарядного устройства. Для этого обратитесь к разделу «Зарядное устройство» .
Свойства системы зарядного устройства
Свойства ro.charger.*
больше не доступны для чтения двоичному файлу charger
в /vendor
. Если на вашем устройстве установлены какие-либо системные свойства ro.charger.*
, обратитесь к свойствам системы для зарядного устройства .
Android 13 включает android.hardware.health
AIDL HAL — преобразование HAL health@2.1. Этот новый HAL имеет следующие преимущества:
- Удалите неиспользуемые API, связанные с зарядным устройством.
- Удалите неиспользуемый
StorageAttribute
и связанные поля. - Поддержка док-зарядки.
Android 11 включает android.hardware.health
HAL 2.1, небольшое обновление версии health@2.0 HAL. Этот новый HAL имеет следующие преимущества:
- Более четкое разделение между фреймворком и кодом поставщика.
- Большая степень свободы для настройки поставщиков в отчетах о состоянии здоровья.
- Больше информации о состоянии устройства, чем просто аккумулятор.
Документация по реализации Health 2.1 HAL находится на этой странице в качестве справки.
Требования
В этом разделе приведены требования для Android 11, 12 и 13 или более поздних версий.
Устройства под управлением Android 11 и Android 12
Устройства, запускаемые под управлением Android 11 и 12, должны иметь HAL 2.1 или AIDL HAL. Устройства, которые не запускаются с Android 11 или 12, но планируют обновить образ поставщика до версии матрицы совместимости Target Framework 5 (выпущенной в Android 11) или 6 (выпущенной в Android 12), должны удалить существующие реализации HAL 2.0 и предоставить HAL 2.1 или AIDL HAL. Устройствам, которые не запускаются с Android 11 и не планируют обновлять образ поставщика, также рекомендуется предоставить HAL 2.1 или AIDL.
AOSP включает в себя несколько вспомогательных библиотек, призванных помочь вам реализовать HAL 2.1 и перейти от старых HIDL HAL.
Устройства под управлением Android 13 и выше
Устройства, запускаемые с Android 13, должны предоставлять AIDL HAL (и не должны предоставлять HIDL HAL). Устройства, которые не запускаются с Android 13, но планируют обновить образ поставщика до версии 7 матрицы совместимости Target Framework (выпущенной в Android 13), должны удалить существующие реализации HIDL HAL и предоставить AIDL HAL. Устройствам, которые не запускаются с Android 13 и не планируют обновлять образ поставщика, также рекомендуется предоставить AIDL HAL.
AOSP включает в себя несколько вспомогательных библиотек, призванных помочь вам реализовать AIDL HAL и перейти от старых HIDL HAL.
Терминология
Ниже приведены термины, которые вам следует знать, прежде чем читать остальную часть документации по работоспособности системы Android:
- здоровье@2.1
- Аббревиатура
android.hardware.health@2.1
. Версия 1 HIDL для здоровья была выпущена в Android 11. - здоровье AIDL HAL
- Аббревиатура
android.hardware.health
. Версия 1 Health AIDL HAL была выпущена в Android 13. - зарядное устройство
- Исполняемый файл, работающий в выключенном режиме зарядки, отображающий анимацию зарядки телефона.
- восстановление
- Исполняемый файл, работающий в режиме восстановления, должен получить информацию о батарее.
- хранится
- Демон, который получает информацию о хранилище и предоставляет ее платформе.
Здоровье в Android 11 и 12
В Android 11 и 12 компонент работоспособности работает, как показано на следующей схеме:
[system]
| getService()
V
[health@2.1-service]
| getService(stub=true)
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
Для других режимов:
[ charger ]
| getService() | (legacy code path)
V +-------------------------------------------------+
[health@2.1-service] |
| getService(stub=true) |
V |
[ health@2.0-impl-2.1-<device>.so ] |
| | (device-dependent linkage) |
V V |
+---------Helper libs for impl--------+ [libhealthd.device] |
| [libhealthloop (uevent, wakealarm)] | |
| [libhealth2impl (IHealth impl) ] | <---------------------------------+
| [libbatterymonitor (battery) ] |
+-------------------------------------+
[recovery]
| getService() w/o hwservicemanager
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
См. следующую упрощенную схему для различных режимов:
Рис. 1. Инфраструктура Health HIDL HAL 2.1.
Здоровье в Android 13
В Android 13 представлен AIDL HAL для здоровья. На рисунке 2 показано, как работает компонент здоровья:
Рисунок 2. Инфраструктура Health AIDL HAL.
HIDL-HAL-интерфейс 2.1
Health@2.1 HAL поддерживает зарядку в выключенном состоянии и предоставляет дополнительную информацию о батарее.
Основной интерфейс IHealth предоставляет следующие дополнительные функции:
-
getHealthConfig
: для получения конфигурации этого HAL -
getHealthInfo_2_1
: незначительное обновление версииgetHealthInfo
-
shouldKeepScreenOn
: чтобы определить, должен ли экран оставаться включенным в режиме зарядного устройства.
Кроме того, реализация @2.1::IHealth
необходима для поддержки @2.1::IHealthInfoCallback
для унаследованных функций registerCallback
и unregisterCallback
. Новый интерфейс обратного вызова возвращает клиенту информацию о состоянии здоровья, используя функцию healthInfoChanged_2_1
вместо унаследованной функции healthInfoChanged
.
Новая структура @2.1::HealthInfo
возвращается с помощью обратных вызовов и getHealthInfo_2_1
. Эта структура содержит дополнительную информацию о состоянии устройства, доступную через health@2.0 HAL, в том числе:
- Уровень емкости аккумулятора
- Время полной зарядки аккумулятора (в секундах)
- Расчетная емкость полной зарядки аккумулятора (мкАч)
На рис. 3 показана UML-диаграмма классов, полезных для реализации работоспособности HAL:
Рисунок 3. UML-диаграмма Health HAL 2.1.
Сведения о реализации службы Health 2.1 см. в разделе «Реализация Health 2.1» .
Интерфейс AIDL HAL версии 1
В этом разделе содержится информация об интерфейсе AIDL HAL версии 1.
Изменения API
HAL AIDL версии 1 поддерживает API, аналогичные HAL HIDL 2.1. По сравнению с интерфейсом HIDL 2.1 в API изменено следующее:
- API-интерфейсы, связанные с зарядными устройствами, представленные в HIDL HAL 2.1, не перенесены в AIDL HAL. Поскольку функция зарядки в выключенном режиме существует только в разделе
/vendor
, API в интерфейсе поставщика не требуются. Чтобы правильно реализовать зарядку в выключенном режиме, см. зарядное устройство . - Тип
StorageAttribute
и связанные поля удаляются, поскольку они не используются. -
chargerDockOnline
добавлен вHealthInfo
для поддержки зарядки от док-станции.
Выполнение
На рис. 4 показана UML-диаграмма классов, полезных для реализации AIDL HAL:
Рисунок 4. UML-диаграмма Health AIDL HAL.
Информацию о реализации службы Health AIDL см. в разделе «Реализация Health AIDL HAL» .
Восстановление
Android 13 поддерживает связывание в восстановлении. Установка службы Health AIDL для восстановления позволяет ей работать в режиме восстановления.
Информацию об установке службы AIDL для восстановления работоспособности см. в следующих разделах:
Зарядное устройство
Функциональность зарядки в выключенном режиме перенесена из /system
в /vendor
. Для устройств, запускаемых с Android 13, если они поддерживают зарядку в выключенном режиме, двоичный файл службы HAL должен поддерживать режим зарядного устройства. Для этого обратитесь к разделу «Зарядное устройство» .
Свойства системы зарядного устройства
Свойства ro.charger.*
больше не доступны для чтения двоичному файлу charger
в /vendor
. Если на вашем устройстве установлены какие-либо системные свойства ro.charger.*
, обратитесь к свойствам системы для зарядного устройства .