Состояние системы Android

В Android 13 включен интерфейс AIDL HAL android.hardware.health , являющийся результатом преобразования из 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. Устройства, не запускаемые с Android 11 или 12, но планирующие обновить образ системы до версии 5 (выпущенной в Android 11) или 6 (выпущенной в Android 12), должны удалить существующие реализации HAL версии 2.0 и поддерживать HAL версии 2.1 или AIDL. Устройствам, не запускаемым с Android 11 и не планирующим обновлять образ системы, также рекомендуется поддерживать HAL версии 2.1 или AIDL.

AOSP включает в себя множество вспомогательных библиотек, предназначенных для облегчения внедрения HAL версии 2.1 и перехода от старых HAL на основе HIDL.

Устройства под управлением Android 13 и выше.

Устройства, запускаемые с Android 13, должны поддерживать AIDL HAL (и не должны поддерживать HIDL HAL). Устройства, не запускаемые с Android 13, но планирующие обновить образ поставщика до версии 7 матрицы совместимости целевой платформы (выпущенной в Android 13), должны удалить существующие реализации HIDL HAL и поддерживать AIDL HAL. Устройствам, не запускаемым с Android 13 и не планирующим обновлять образ поставщика, также рекомендуется поддерживать AIDL HAL.

AOSP включает в себя множество вспомогательных библиотек, предназначенных для облегчения внедрения AIDL HAL и перехода от старых HIDL HAL.

Терминология

Ниже приведены термины, которые вам следует знать, прежде чем читать остальную документацию по состоянию системы Android:

здоровье@2.1
Сокращенное обозначение android.hardware.health@2.1 . Первая версия HIDL-файла health была выпущена в Android 11.
здоровье AIDL HAL
Сокращение от android.hardware.health . Первая версия hal-интерфейса AIDL для мониторинга здоровья была выпущена в 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)      ] |
+-------------------------------------+

См. следующую упрощенную схему для различных режимов:

Инфраструктура Health HIDL HAL 2.1

Рисунок 1. Инфраструктура Health HIDL HAL 2.1.

Здоровье в Android 13

В Android 13 представлен компонент мониторинга состояния AIDL HAL. На рисунке 2 подробно показано, как работает компонент мониторинга состояния:

Инфраструктура Health AIDL HAL

Рисунок 2. Инфраструктура Health AIDL HAL.

Интерфейс HIDL HAL 2.1

Интерфейс health@2.1 HAL поддерживает зарядку в выключенном режиме и предоставляет дополнительную информацию о батарее.

Основной интерфейс, IHealth , предоставляет следующие дополнительные функции.

  • getHealthConfig : для получения конфигурации этого HAL.
  • getHealthInfo_2_1 : обновление версии getHealthInfo
  • shouldKeepScreenOn : определяет, следует ли оставлять экран включенным в режиме зарядки.

Кроме того, для поддержки функций registerCallback и unregisterCallback требуется реализация @2.1::IHealth @2.1::IHealthInfoCallback . Новый интерфейс обратного вызова возвращает информацию о состоянии здоровья клиенту, используя функцию healthInfoChanged_2_1 вместо унаследованной функции healthInfoChanged .

Новая структура @2.1::HealthInfo возвращается с помощью коллбэков и getHealthInfo_2_1 . Эта структура содержит дополнительную информацию о состоянии устройства, доступную через HAL health@2.0, включая:

  • уровень емкости батареи
  • Время полной зарядки аккумулятора (в секундах)
  • Расчетная емкость батареи при полном заряде (в мкАч)

На рисунке 3 представлена ​​UML-диаграмма классов, полезных для реализации медицинского HAL:

Диаграмма UML HAL Health 2.1

Рисунок 3. UML-диаграмма Health HAL 2.1.

Для получения информации о внедрении программы «Здравоохранение 2.1» см. раздел «Внедрение программы «Здравоохранение 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-интерфейсы в Vendor Interface не требуются. Для корректной реализации зарядки в выключенном режиме см. раздел charger .
  • Поля типа StorageAttribute и связанные с ними поля удалены, поскольку они не используются.
  • В HealthInfo добавлена chargerDockOnline для поддержки зарядки от док-станции.

Выполнение

На рисунке 4 представлена ​​UML-диаграмма классов, полезных для реализации HAL в области здравоохранения:

Диаграмма UML для Health AIDL HAL

Рисунок 4. UML-диаграмма Health AIDL HAL.

Для получения информации о внедрении сервиса Health AIDL см. раздел «Внедрение Health AIDL HAL» .

Восстановление

Android 13 поддерживает Binder в режиме восстановления. Установка службы Health AIDL в режим восстановления позволяет ей работать в этом режиме.

Для получения информации об установке службы Health AIDL для восстановления системы см. следующие сведения:

Зарядное устройство

Функциональность зарядки в выключенном режиме перенесена из /system в /vendor . Для устройств, выпущенных с Android 13, если они поддерживают зарядку в выключенном режиме, исполняемый файл службы HAL должен поддерживать режим зарядки. Для этого обратитесь к разделу реализации charger .

Свойства системы зарядки

Свойства ro.charger.* больше недоступны для чтения исполняемым файлом charger в каталоге /vendor . Если на вашем устройстве заданы какие-либо системные свойства ro.charger.* , обратитесь к системным свойствам зарядного устройства .