Android Automotive OS (AAOS) основана на базовом аудиостеке Android и поддерживает сценарии использования в качестве информационно-развлекательной системы в автомобиле. AAOS отвечает за звуковое сопровождение информационно-развлекательных систем (то есть мультимедиа, навигации и связи), но не отвечает напрямую за звуковые сигналы и предупреждения, которые имеют строгие требования к доступности и времени воспроизведения.
Хотя система AAOS предоставляет сигналы и механизмы, помогающие автомобилю управлять звуком, в конечном итоге именно автомобиль принимает решение о том, какие звуки должны воспроизводиться для водителя и пассажиров, обеспечивая надлежащее и бесперебойное воспроизведение критически важных для безопасности звуков и звуков, соответствующих нормативным требованиям.
Поскольку AAOS использует аудиостек Android, сторонним приложениям, воспроизводящим звук, не нужно делать ничего отличного от того, что они делали бы на телефонах. Маршрутизация звука в приложении автоматически управляется AAOS, как описано в разделе «Настройка политики звука» .
Поскольку Android управляет воспроизведением мультимедиа в автомобиле, внешние источники мультимедиа, такие как радиоприемник, должны быть представлены приложениями, способными обрабатывать события фокусировки звука и нажатия мультимедийных клавиш для этого источника.
Звуки и потоки Android
Автомобильные аудиосистемы обрабатывают следующие звуки и потоки:

Рисунок 1. Схема архитектуры, ориентированной на потоки данных.
Android управляет звуками, исходящими из приложений Android, контролируя эти приложения и направляя их звуки на устройства вывода в HAL в зависимости от типа звука:
Логические потоки , известные в основной аудиотерминологии как источники, помечаются аудиоатрибутами .
Физические потоки , известные в основной аудиотерминологии как устройства, не содержат контекстной информации после микширования.
Для обеспечения надежности внешние звуки (поступающие из независимых источников, таких как звуковые сигналы предупреждения о непристегнутых ремнях безопасности) обрабатываются вне Android, на уровне HAL или даже в отдельном оборудовании. Разработчики системы должны предоставить микшер, который принимает один или несколько потоков звукового ввода от Android, а затем соответствующим образом объединяет эти потоки с внешними источниками звука, необходимыми для автомобиля. Android Control HAL предоставляет другой механизм для обратной связи звуков, генерируемых вне 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 . Для получения дополнительной информации см. раздел «Настройка политики аудио» .