Обзор

Android Automotive OS (AAOS) основана на базовом аудиостеке Android и поддерживает сценарии использования информационно-развлекательной системы в автомобиле. AAOS отвечает за звуковые эффекты информационно-развлекательной системы (мультимедиа, навигации и связи), но не отвечает напрямую за звуковые сигналы и предупреждения, которые имеют строгие требования к доступности и синхронизации.

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

Поскольку AAOS использует аудиостек Android, сторонним приложениям, воспроизводящим аудио, не нужно выполнять никаких действий, отличающихся от действий на телефонах. Маршрутизация аудиосигнала приложения автоматически управляется AAOS, как описано в разделе «Настройка политики аудио» .

Поскольку Android управляет мультимедийным интерфейсом транспортного средства, внешние медиа-источники, такие как радиотюнер, должны быть представлены приложениями, которые могут обрабатывать аудиофокус и ключевые события медиа для источника.

Звуки и потоки Android

Автомобильные аудиосистемы обрабатывают следующие звуки и потоки:

image

Рисунок 1. Схема потокоцентрической архитектуры.

Android управляет звуками, поступающими из приложений Android, контролируя эти приложения и направляя их звуки на выходные устройства в HAL в зависимости от типа звука:

  • Логические потоки , известные как источники в базовой аудиономенклатуре, помечаются атрибутами Audio .

  • Физические потоки , известные как устройства в базовой аудиономенклатуре, не имеют контекстной информации после микширования.

Для обеспечения надёжности внешние звуки (поступающие из независимых источников, например, звуковые сигналы предупреждения о непристёгнутом ремне безопасности) управляются вне Android, ниже уровня HAL или даже на отдельном оборудовании. Разработчики системы должны предоставить микшер, который принимает один или несколько входных звуковых потоков от Android и затем объединяет эти потоки соответствующим образом с внешними источниками звука, необходимыми для автомобиля. Уровень HAL Android Control предоставляет другой механизм для передачи звуков, генерируемых вне Android, обратно в Android:

  • Запрос аудиофокуса
  • Ограничения усиления или громкости
  • Изменения усиления и громкости

Реализация аудио HAL и внешний микшер отвечают за обеспечение слышимости внешних звуков, важных для безопасности, а также за микширование потоков, предоставляемых Android, и их направление на подходящие динамики.

Звуки Android

Приложения могут иметь один или несколько проигрывателей, взаимодействующих через стандартные API Android (например, AudioManager для управления фокусом или MediaPlayer для потоковой передачи) для создания одного или нескольких логических потоков аудиоданных. Эти данные могут быть одноканальными моно или объемным звуком 7.1, но маршрутизируются и обрабатываются как единый источник. Поток приложения связан с AudioAttributes , которые дают системе подсказки о том, как должен воспроизводиться звук.

Логические потоки передаются через AudioService и направляются на один (и только один) из доступных физических выходных потоков, каждый из которых является выходом микшера в AudioFlinger. После микширования аудиоатрибутов в физический поток они становятся недоступны.

Каждый физический поток затем доставляется в Audio HAL для аппаратного рендеринга. В автомобильных приложениях аппаратное рендеринг может осуществляться с помощью локальных кодеков (аналогично мобильным устройствам) или удалённого процессора в физической сети автомобиля. В любом случае, задача реализации Audio HAL — доставить фактические данные сэмплирования и сделать их слышимыми.

Внешние потоки

Звуковые потоки, которые не должны проходить через Android (из-за сертификации или синхронизации), могут быть отправлены напрямую на внешний микшер. Начиная с Android 11, HAL теперь может запрашивать фокус для этих внешних звуков, чтобы информировать Android о необходимых действиях, например, приостанавливать воспроизведение медиафайлов или блокировать фокус для других устройств.

Если внешние потоки представляют собой медиаисточники, которые должны взаимодействовать со звуковой средой, создаваемой Android (например, останавливать воспроизведение MP3 при включении внешнего тюнера), эти внешние потоки должны быть представлены приложением Android. Такое приложение будет запрашивать аудиофокус от имени медиаисточника, а не HAL, и будет реагировать на уведомления о фокусе, запуская и останавливая внешний источник по мере необходимости, чтобы соответствовать политике фокуса Android.

Приложение также отвечает за обработку ключевых событий медиа, таких как воспроизведение и пауза. Одним из предлагаемых механизмов управления такими внешними устройствами является HwAudioSource . Подробнее см. в разделе Подключение устройства ввода в AAOS .

Устройства вывода

На уровне Audio HAL тип устройства AUDIO_DEVICE_OUT_BUS представляет собой универсальное устройство вывода для использования в автомобильных аудиосистемах. Это устройство поддерживает адресуемые порты (где каждый порт является конечной точкой физического потока) и, как ожидается, будет единственным поддерживаемым типом устройства вывода в автомобиле.

Системная реализация может использовать один порт шины для всех звуков Android, в этом случае Android микширует все звуки и передает их как один поток. В качестве альтернативы, HAL может предоставить один порт шины для каждого CarAudioContext , обеспечивая одновременную передачу любого типа звука. Это позволяет реализации HAL микшировать и приглушать различные звуки по своему усмотрению.

Назначение аудиоконтекстов выходным устройствам осуществляется через файл car_audio_configuration.xml . Подробнее см. в разделе «Настройка аудиополитики» .