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