Чтобы гарантировать, что аппаратные и программные компоненты (такие как дисплей, звук и голосовое взаимодействие) выборочно включаются и выключаются по мере необходимости, AAOS предоставляет политику электропитания, которая состоит из набора ожидаемых состояний включения и выключения для аппаратных и программных компонентов. . VHAL, или службы поставщиков с привилегиями системы, могут применять новую политику электропитания при изменении состояния питания Android или при выполнении условий, которых они ожидают.
Применение политики электропитания разрешено в состояниях Ожидание VHAL и Включено (иногда с некоторыми ограничениями). В режиме подготовки к выключению режим гаража работает, и его не должно прерывать изменение состояния питания. Хотя обычную политику электропитания применить невозможно, при подготовке к завершению работы применяется специальная политика электропитания, то есть политика электропитания системы, называемая отсутствием взаимодействия с пользователем.
Состояние питания AAOS
Устройства AAOS следуют следующей диаграмме состояний питания:

Рисунок 1. Диаграмма состояния питания AAOS.
Каждое состояние питания описано ниже:
| Ценить | Описание | 
|---|---|
| Выключенный | 
  | 
| Подождите ВХАЛ | 
 
  | 
| На | 
 
  | 
| Подготовка к отключению | 
  | 
| Подождите, пока VHAL завершится. | 
 
  | 
| Приостановка в оперативной памяти (STR) | 
  | 
| Приостановка на диске (STD) | 
  | 
Как определяется политика власти?
 Разработчики определяют политики электропитания в /vendor/etc/automotive/power_policy.xml , которые:
- Определяет политику власти.
 - Определяет группы политик электропитания, которые включают политику электропитания по умолчанию и автоматически применяются при смене состояний электропитания.
 - Переопределяет политику электропитания системы.
 
Энергетическая политика
Политика электропитания состоит из набора ожидаемых состояний электропитания аппаратных и программных компонентов. AAOS поддерживает следующие компоненты в политике электропитания:
|  АУДИО СМИ ОТОБРАЖАТЬ BLUETOOTH  |  WI-FI СОТОВАЯ СВЯЗЬ ЭТЕРНЕТ ПРОЕКЦИЯ  |  НФК ВХОД VOICE_INTERACTION ВИЗУАЛЬНОЕ_ВЗАИМОДЕЙСТВИЕ  |  TRUSTED_DEVICE_DETECTION РАСПОЛОЖЕНИЕ МИКРОФОН Процессор  | 
Поставщики также могут определять свои собственные компоненты питания для использования с политиками электропитания. Определите пользовательские компоненты электропитания в том же XML-файле, что и политики электропитания, как в этом примере:
<customComponents>CUSTOM_COMPONENT_1000 CUSTOM_COMPONENT_SPECIAL_SENSOR CUSTOM_COMPONENT_AUX_INPUT </customComponents>
Группа политики электропитания
Политика электропитания по умолчанию автоматически применяется при переходе состояний электропитания, указанном в группе политик электропитания. Поставщики могут определить политику электропитания по умолчанию для «Ожидание VHAL», «Вкл» и «Ожидание завершения VHAL» (вход в глубокий сон или начало выключения).
Политики электропитания системы
AAOS поддерживает две политики электропитания системы: отсутствие взаимодействия с пользователем и приостановка подготовки. Политика электропитания системы применяется, когда устройство переходит в режим «Без звука», «Гаражный режим», «Приостановка в ОЗУ» или «Приостановка на диск».
 В следующих таблицах указано поведение каждого компонента политики электропитания системы. Разработчики могут переопределить обнаружение Bluetooth, NFC и доверенных устройств в политике электропитания системы без взаимодействия с пользователем . Переопределения применяются в /vendor/etc/power_policy.xml .
нет взаимодействия с пользователем
Поведение политики управления питанием системы без взаимодействия с пользователем определено в этой таблице:
| Компоненты | Состояние питания | Настраиваемый | 
|---|---|---|
| Аудио | Выключенный | Нет | 
| СМИ | Выключенный | Нет | 
| Отображать | Выключенный | Нет | 
| Bluetooth | Выключенный | Да | 
| Wi-Fi | На | Нет | 
| Сотовая связь | На | Нет | 
| Ethernet | На | Нет | 
| Проекция | Выключенный | Нет | 
| НФК | Выключенный | Да | 
| Вход | Выключенный | Нет | 
| Ассистент | Выключенный | Нет | 
| Взаимодействие с пользователем | Выключенный | Нет | 
| Обнаружение доверенных устройств для входа пользователя в систему | На | Да | 
| Расположение | Выключенный | Нет | 
| Микрофон | Выключенный | Нет | 
| Процессор | На | Нет | 
приостановить подготовку
Поведение политики электропитания системы подготовки к приостановке определено в этой таблице:
| Компоненты | Состояние питания | OEM-конфигурируемый | 
|---|---|---|
| Аудио | Выключенный | Нет | 
| СМИ | Н/Д | Нет | 
| Отображать | Н/Д | Нет | 
| Bluetooth | Выключенный | Нет | 
| Wi-Fi | Выключенный | Нет | 
| Сотовая связь | Н/Д | Нет | 
| Ethernet | Н/Д | Нет | 
| Проекция | Н/Д | Нет | 
| НФК | Н/Д | Нет | 
| Вход | Н/Д | Нет | 
| Ассистент | Н/Д | Нет | 
| Взаимодействие с пользователем | Н/Д | Нет | 
| Обнаружение доверенных устройств для входа пользователя в систему | Н/Д | Нет | 
| Расположение | Выключенный | Нет | 
| Микрофон | Выключенный | Нет | 
| Процессор | Выключенный | Нет | 
Взаимодействие с ВХАЛ
Демон политики электропитания автомобиля, работающий на системном уровне, подписывает два свойства для прослушивания запросов от VHAL:
-  
POWER_POLICY_REQVHAL записывает идентификатор политики электропитания в это свойство. -  
POWER_POLICY_GROUP_REQVHAL записывает идентификатор группы политики электропитания в это свойство. 
 Текущую политику электропитания в системе можно изменить с помощью модулей, отличных от VHAL. В этом случае демон политики электропитания автомобиля обновляет свойство CURRENT_POWER_POLICY , чтобы уведомить об изменении VHAL.
Взаимодействие с нативными процессами
Как упоминалось выше, демон политики электропитания автомобиля работает на системном уровне и с точки зрения управления политикой электропитания обеспечивает почти ту же функциональность, что и CPMS, работающий на уровне инфраструктуры. Кроме того, предположим, что демон политики электропитания автомобиля и CPMS полностью синхронизированы.
Демон политики электропитания автомобиля экспортирует интерфейсы AIDL для использования HAL и другими собственными процессами. Они могут быть уведомлены об изменении новой политики электропитания. Другими словами, когда каждый должен изменить свое энергетическое состояние.
ICarPowerPolicyServer.aidl
  package android.frameworks.automotive.powerpolicy;
  import android.frameworks.automotive.powerpolicy.CarPowerPolicy;
  import android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter;
  import android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback;
  import android.frameworks.automotive.powerpolicy.PowerComponent;
  /**
   * ICarPowerPolicyServer is an interface implemented by the power policy daemon.
   * VHAL changes the power policy and the power policy daemon notifies the change to
   * registered subscribers. When subscribing to policy changes, a filter can be specified so
   * that the registered callbacks can listen only to a specific power component's change.
   */
  @VintfStability
  interface ICarPowerPolicyServer {
    /**
     * Gets the current power policy.
     * @throws IllegalStateException if the current policy is not set.
     */
    CarPowerPolicy getCurrentPowerPolicy();
    /**
     * Gets whether the power component is turned on or off.
     *
     * @param componentId Power component ID defined in PowerComponent.aidl to check power
     * state.
     * @return True if the component's power state is on.
     * @throws IllegalArgumentException if the componentId is invalid.
     */
    boolean getPowerComponentState(in PowerComponent componentId);
    /**
     * Subscribes to power policy change.
     * Notification is sent to the registered callback when the power policy changes and the
     * power state of the components which the callback is interested in changes.
     *
     * @param callback Callback that is invoked when the power policy changes.
     * @param filter The list of components which the callback is interested in.
     * @throws IllegalArgumentException if the callback is already registered.
     * @throws IllegalStateException if the callback is dead.
     */
    void registerPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback,
        in CarPowerPolicyFilter filter);
    /**
     * Unsubscribes from power policy change.
     *
     * @param callback Callback that doesn't want to receive power policy change.
     * @throws IllegalArgumentException if the callback is not registered.
     */
    void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback);
    /**
     * Applies the power policy.
     *
     * {@code policyId} should be one of power policy IDs defined in
     * {@code /vendor/etc/automotive/power_policy.xml} or predefined system power policies.
     *
     * @param policyId ID of power policy.
     * @throws IllegalArgumentException if {@code policyId} is invalid.
     */
    void applyPowerPolicy(in @utf8InCpp String policyId);
    /**
     * Sets the current power policy group.
     *
     * 
{@code policyGroupId} should be one of power policy group IDs defined in
     * {@code /vendor/etc/automotive/power_policy.xml}.
     *
     * @param policyGroupId ID of power policy group.
     * @throws IllegalArgumentException if {@code policyGroupId} is invalid.
     */
    void setPowerPolicyGroup(in @utf8InCpp String policyGroupId);
  }
ICarPowerPolicyChangeCallback.aidl
  package android.frameworks.automotive.powerpolicy;
  import android.frameworks.automotive.powerpolicy.CarPowerPolicy;
  /**
   * ICarPowerPolicyChangeCallback is notified when a power policy changes.
   */
  @VintfStability
  oneway interface ICarPowerPolicyChangeCallback {
    /**
     * Called when a power policy is fully changed.
     *
     * @param policy The current policy.
     */
    void onPolicyChanged(in CarPowerPolicy policy);
  }
Взаимодействие с Java-модулями
 CarPowerManager предоставляет методы для управления политикой электропитания:
- Получить текущую политику электропитания
 - Примените новую политику электропитания
 - Установите новую группу политики электропитания
 
 Только модули с привилегиями системы могут использовать эти методы. Модули, которые хотят получать информацию о применении политики электропитания, могут зарегистрировать прослушиватель изменения политики электропитания в CarPowerManager